#pragma once #include <stdlib.h> class CLogger { public: CLogger(void); CLogger(LPCTSTR lpszFileName,BOOL bAtCurrDir = TRUE,BOOL bLogTime = FALSE,BOOL bAppendMode = FALSE); virtual ~CLogger(void); void Write(const char* format,...); void WriteLine(const char* format,...); void EnableLogTime(BOOL bEnable); private: CStdioFile m_logFile; BOOL m_bLogTime; void OpenFile(LPCTSTR lpszFileName,BOOL bAppendMode); }; ////////////////////////////////////////////////////////////////////////// CLogger::CLogger(LPCTSTR lpszFileName, BOOL bAtCurrDir /*= TRUE*/, BOOL bLogTime /*= FALSE*/, BOOL bAppendMode /*= FALSE*/): m_bLogTime(bLogTime) { CString strLog; if (bAtCurrDir) { TCHAR szFullPath[MAX_PATH]; TCHAR szDir[_MAX_DIR]; TCHAR szDrive[_MAX_DRIVE]; // Get application's full path. ::GetmodulefileName(NULL,szFullPath,MAX_PATH); // Break full path into seperate components. _splitpath(szFullPath,szDrive,szDir,NULL,NULL); // Store application's drive and path strLog.Format(_T("%s%s//%s"),lpszFileName); } else strLog = lpszFileName; OpenFile(strLog,bAppendMode); } CLogger::CLogger() { TCHAR szFileName[MAX_PATH]; ::GetmodulefileName(NULL,szFileName,MAX_PATH); CString strLog(szFileName); CTime t = CTime::GetCurrentTime(); strLog.Replace(".exe",t.Format("_%Y_%m_%d") + ".txt"); OpenFile(strLog,TRUE); } void CLogger::OpenFile(LPCTSTR lpszFileName,BOOL bAppendMode) { int mode = CStdioFile::modeCreate | CStdioFile::modeWrite | CStdioFile::shareDenyWrite; if (bAppendMode) mode |= CStdioFile::modeNoTruncate; m_logFile.Open(lpszFileName,mode); m_logFile.SeekToEnd(); } CLogger::~CLogger(void) { m_logFile.Close(); } void CLogger::Write(const char* format,...) { static TCHAR msg[1024]; va_list argptr; va_start(argptr,format); _vsnprintf(msg,sizeof(msg),format,argptr); va_end(argptr); if (m_bLogTime) m_logFile.WriteString(CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%s,").GetBuffer(0)); m_logFile.WriteString(msg); m_logFile.Flush(); } void CLogger::WriteLine(const char* format,").GetBuffer(0)); m_logFile.WriteString(msg); m_logFile.WriteString("/n"); m_logFile.Flush(); } void CLogger::EnableLogTime(BOOL bEnable) { m_bLogTime = bEnable; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。