此类可以实现大多数应用程序日志功能,可以每天创建一个Log文件,支持中文内容。
LogFile.h头文件
// LogFile.h: interface for the CLogFile class.
//
//
#if !defined(AFX_LOGFILE_H__DD3CDF99_1639_4506_88F4_887CFD1DE775__INCLUDED_)
#define AFX_LOGFILE_H__DD3CDF99_1639_4506_88F4_887CFD1DE775__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CLogFile
{
public:
CLogFile();
virtual ~CLogFile();
public:
static CString GetFileName();
static CString GetFilePath();
static BOOL WriteLog(CString strLogText);
};
#endif // !defined(AFX_LOGFILE_H__DD3CDF99_1639_4506_88F4_887CFD1DE775__INCLUDED_)
LogFile.cpp文件
// 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 strFileName;
strFileName = CTime::GetCurrentTime().Format("%Y-%m-%d") + ".log";
return strFileName;
}
//获取应用程序所在的路径
CString CLogFile::GetFilePath()
{
CString strFilePath;
GetModuleFileName(NULL, strFilePath.GetBufferSetLength(MAX_PATH+1), MAX_PATH);
strFilePath.ReleaseBuffer();
int nPosIndex;
nPosIndex = strFilePath.ReverseFind('//');
strFilePath = strFilePath.Left(nPosIndex) + "//log";
return strFilePath;
}
BOOL CLogFile::WriteLog(CString strLogText)
{
try
{
CFile File;
CStdioFile SFile;
CFileFind FileFind;
CString strErrMsg;
CString strFileName = GetFileName();
CString strFilePath = GetFilePath();
CString strCurrTime = CTime::GetCurrentTime().Format("%Y-%m-%d %X");
strErrMsg = strCurrTime + "/t";
strErrMsg += strLogText + "/n";
if (!FileFind.FindFile(strFilePath))
{
CreateDirectory(strFilePath, NULL);
}
if (!SFile.Open(strFilePath+ "//" + strFileName, CFile::modeReadWrite))
{
SFile.Open(strFilePath+ "//" + strFileName, CFile::modeCreate
| CFile::modeReadWrite | CFile::typeText);
}
SFile.SeekToEnd();
char *szMsg;
szMsg = (LPTSTR)(LPCTSTR)strErrMsg;
SFile.Write(strErrMsg, lstrlen(szMsg));
SFile.Close();
}
catch (CFileException fException)
{
return FALSE;
}
return TRUE;
}
调用方法说明:
首先在要调用的页面加入引用
#include "LogFile.h"
然后,写入下列代码可以正常调用
CLogFile::WriteLog("这是日志测试信息!");
在应用程序的根目录下面创建一个文件夹名为log
日志文件名为:2010-04-12.log
日志文件中的信息为:2010-04-12 12:47:46 这是日志测试信息!
感谢网站http://kb.cnblogs.com/a/1526500/根据这个代码稍加修改。