⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logfile.cpp

📁 上传的是有关mfc的详细介绍
💻 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 + -