在做简单的本地测试程序代码时候,要向程序目录中增加日志管理功能,所以写了一个日志管理类;
.h文件:
#include <direct.h>
#include <afx.h>
#include <atltime.h>
#include <stdio.h>
// CLog
class CLog : public CWnd
{
DECLARE_DYNAMIC(CLog)
public:
CLog();
// CLog(CStdioFile *m_file);
virtual ~CLog();
public:
void addLog(CString str);
private:
CStdioFile m_file;
//CTime time;
CRITICAL_SECTION m_crit;
protected:
DECLARE_MESSAGE_MAP()
};
,cpp文件:
CLog::CLog()
{
//m_file.Open("C:\\Documents and Settings\\Administrator\\Obj\\log.txt",CFile::modeWrite);
//if(!m_file)
//{
// m_file.Open("C:\\Documents and Settings\\Administrator\\Obj\\log.txt",CFile::modeCreate|CFile::modeWrite);
//
//}
::InitializeCriticalSection(&m_crit);
}
CLog::~CLog()
{
//m_file.Close();
DeleteCriticalSection(&m_crit);
}
void CLog::addLog(CString str) //addlog()向日志里面写信息
{
//进入临界区(写文件)
::EnterCriticalSection(&m_crit);
//CString szFile;
//char pathbuf[260];
//int pathlen=::GetModuleFileNameA(NULL,pathbuf,260);
//szFile=fname+"\\log.txt";
CString strPath;
::GetModuleFileName(NULL,strPath.GetBuffer(MAX_PATH),MAX_PATH);
strPath.ReleaseBuffer();
strPath=strPath.Left(strPath.ReverseFind(_T('\\')));
CString szFile;
szFile=strPath+"\\log.txt";
// MessageBox(szFile,"路径",MB_OK);
m_file.Open(szFile,CStdioFile::modeReadWrite|CStdioFile::modeCreate|CStdioFile::modeNoTruncate);
m_file.SeekToEnd();
CTime time= CTime::GetCurrentTime();
CString m_strTime=time.Format("%Y-%m-%d %H:%M:%S");
m_file.WriteString(m_strTime);
m_file.WriteString(str);
CString str1;
str1.Format("\r\n");
m_file.WriteString(str1);
m_file.Close();
::LeaveCriticalSection(&m_crit);
//退出临界区
}