📄 logfile.cpp
字号:
// LogFile.cpp: implementation of the CLogFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "LogFile.h"
#include <windows.h>
#include <Winbase.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
////
//////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#include "SystemConfig.h"
//CLogFile *g_log;
CLogFile *CLogFile::s_logFile = NULL;
CLogFile *CLogFile::GetLog()
{
if(!s_logFile)
{
// 因为退出程序的时候,会自动清理内存,
// 所以没有对s_logFile设置delete语句。
s_logFile = new CLogFile();
}
return s_logFile;
}
CLogFile::CLogFile( void )
{
this->m_hFile = INVALID_HANDLE_VALUE;
this->m_bStop = false;
}
CLogFile::~CLogFile( void )
{
if(this->m_hFile != NULL)
{
CloseHandle(this->m_hFile);
}
}
// 创建日志文件
void CLogFile::Create( void )
{
// 构造日志文件名称
SYSTEMTIME time;
GetLocalTime(&time);
this->m_strName.Format(_T("log%4d%02d%02d %02d%02d%02d.txt"),
time.wYear, time.wMonth, time.wDay,
time.wHour, time.wMinute, time.wSecond );
char* logPath = SystemConfig::GetConfig()->m_chLogPath;
this->m_szFileName.Format( TEXT("%s%s"), logPath, this->m_strName );
this->m_hFile = CreateFile(
(TEXT("%s"),m_szFileName),
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL );
if( INVALID_HANDLE_VALUE == m_hFile )
{
DWORD dw = GetLastError();
}
}
// 写日志
void CLogFile::WriteLog( const char* content )
{
WriteLog(content, CLogFile::Level::Info);
}
void CLogFile::WriteLog(CString strContent)
{
char* pContent = strContent.GetBuffer(strContent.GetLength());
WriteLog(pContent, CLogFile::Level::Info);
}
void CLogFile::WriteLog(const char * content, const Level level)
{
int sysLevel = SystemConfig::GetConfig()->m_nLogLevel;
if ((int)level < sysLevel)
{
return;
}
if(this->m_bStop) return;
if(INVALID_HANDLE_VALUE == this->m_hFile)
{
Create();
}
// 不能写入空字符串
if( 0 == strlen(content))
{
return;
}
// 得到当前时间
SYSTEMTIME time;
GetLocalTime(&time);
// 写入日志
char szTemp[1024];
sprintf( szTemp, "\r\n%4d-%02d-%02d %02d:%02d:%02d degree:%d %s\n\0",
time.wYear,
time.wMonth,
time.wDay,
time.wHour,
time.wMinute,
time.wSecond,
level,
content);
DWORD written;
WriteFile(this->m_hFile, szTemp, strlen(szTemp), &written, 0);
_flushall();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -