vc记录日志
2012-01-18 15:14
148 查看
vc2005写日志类
头文件:
源代码:
头文件:
// LogFile.h: interface for the CLogFile class. // // Remark:摘自网上一篇博客,改造了下 // Author: jiftle // DateTime: 2012-01-17 15:14 腊月二十五 ////////////////////////////////////////////////////////////////////// #if !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_) #define AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CLogFile { public: CLogFile(); virtual ~CLogFile(); static CString GetFileName(); static CString GetFilePath(); static BOOL WriteLog(CString LogText); }; #endif // !defined(AFX_LOGFILE_H__288388CA_9A3E_4F3D_A2B8_F1078E1F6A6B__INCLUDED_)
源代码:
// LogFile.cpp: implementation of the CLogFile class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "LogFile.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CLogFile::CLogFile() { } CLogFile::~CLogFile() { } //获取文件名称 CString CLogFile::GetFileName() { CString m_sFileName; m_sFileName = CTime::GetCurrentTime().Format("%Y-%m-%d") + _T(".log"); return m_sFileName; } //获取应用程序所在路径 CString CLogFile::GetFilePath() { CString m_FilePath; GetModuleFileName(NULL,m_FilePath.GetBufferSetLength(MAX_PATH+1),MAX_PATH); m_FilePath.ReleaseBuffer(); int m_iPosIndex; m_iPosIndex = m_FilePath.ReverseFind(_T('\\')); m_FilePath = m_FilePath.Left(m_iPosIndex) + _T("\\Log"); return m_FilePath; } BOOL CLogFile::WriteLog(CString LogText) { try { CFile m_File; CStdioFile m_SFile; CFileFind m_FileFind; CString strLog; CString m_sFileName = GetFileName(); CString m_sFilePath = GetFilePath(); CString strTime = CTime::GetCurrentTime().Format(_T("[%Y-%m-%d %H:%m:%S] ")); //组合写入字符串 strLog += strTime; strLog += LogText; if(!m_FileFind.FindFile(m_sFilePath)) { CreateDirectory(m_sFilePath,NULL); } if(!m_SFile.Open(m_sFilePath + _T("\\") +m_sFileName,CFile::modeReadWrite)) { m_SFile.Open(m_sFilePath + _T("\\") + m_sFileName,CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary); } m_SFile.SeekToEnd(); //written by jiftle 处理UNICODE下乱码 #ifdef UNICODE CString strTmp = strLog; int len = 0; char *buf = NULL; len = WideCharToMultiByte(CP_ACP,0,strTmp,strTmp.GetLength(),NULL,0,NULL,NULL)+1; buf = new char[len]; memset(buf,0,len); WideCharToMultiByte(CP_ACP,0,strTmp,strTmp.GetLength(),buf,len-1,NULL,NULL); #else CString strTmp = strLog; char *buf = NULL; int len=0; len = strTmp.GetLength()+1;//多分配一个存放结束符号 buf = new char[len]; memset(buf,0,len); buf=strTmp.GetBuffer(); #endif m_SFile.Write(buf,strlen(buf)); m_SFile.Close(); } catch(CFileException fileException) { return false; } return true; }
相关文章推荐
- vc多行输入控件、可以用来记录日志的控件
- VC记录日志通用代码
- VC利用console调试和记录日志
- 如何在VC中记录系统日志
- 在应用程序日志中重复记录 ESENT 事件 ID 1000、1202、412 和 454
- 记录跟踪日志【r.r2d】
- acegi 用户登录成功后记录用户登录日志
- c1-2-fast-wave渲染日志记录
- VC++实现监视系统的键盘操作 创建记录键盘动作的全局钩子DLL
- VB源码--TXT文件尾部追加资料,可用于记录日志及数据添加等用途
- Log4Net异常日志记录在asp.net mvc3.0的应用
- nginx设置日志不记录404或者200或者其他日志信息
- Oracle10g新特性——记录DML错误日志
- 记录日志
- replication format(日志记录格式)
- java 自己定义异常,记录日志简单说明!留着以后真接复制
- 普通错误日志记录。
- Log4Net日志记录两种方式
- 调研——日志记录库之对比友盟和bugly
- linux shell日志工具类 可以记录日志用