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

📄 log.cpp

📁 提供windows和unix下各种级别日志,包括 xml
💻 CPP
字号:
#include "log.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void CLogFile::ShowInfo(char* buffer)
{
	cout<<buffer<<endl;
}

static bool m_bWriteLog=true;
bool CLogFile::IsWriteLog()
{
	return m_bWriteLog;
}
void CLogFile::StartWriteLog()
{
	m_bWriteLog=true;
}
void CLogFile::StopWriteLog()
{
	m_bWriteLog=false;
}
void CLogFile::WriteInfoLog(bool bShow,const char* fmt, ... )
{
	if(!bOpen)
	{
		bOpen=true;
		SetPath("../log","engine.log");
	}

	char buffer[4096];
	va_list args;
	va_start(args, fmt);
	vsprintf(buffer, fmt, args);
	va_end(args);

	m_bWriteLog = bShow;
	if(m_bWriteLog)
		WriteLog(buffer);

	ShowInfo(buffer);

}

void CLogFile::WriteErrorLog(bool bShow,const char* fmt, ... )
{
	if(!bOpen)
	{
		bOpen=true;
		SetPath("../log","engineerror.log");
	}

	//m_mutex.Lock();

	char buffer[4096];
	va_list args;
	va_start(args, fmt);
	vsprintf(buffer, fmt, args);
	va_end(args);

	m_bWriteLog = bShow;
	if(m_bWriteLog)
		WriteLog(buffer);

	ShowInfo(buffer);
}

CLogFile::CLogFile()
{
	m_pLogFile=NULL;
	m_nFileSize=0;
	bOpen = false;
}

CLogFile::~CLogFile()
{
	if(m_pLogFile)
	{
		fclose(m_pLogFile);
		m_pLogFile = NULL;
	}
}

void  CLogFile::SetPath(const char* szPath,char* fileName)
{
	char path[1024];
	if(*szPath !=0)
	{
		cout<<"创建目录"<<szPath<<endl;
		
		sprintf(path,"mkdir %s",szPath);
		system(path);
		sprintf(m_szFilePath,"%s/%s",szPath,fileName);
	}
	else
	{
		sprintf(m_szFilePath,"./%s",fileName);
	}

	cout<<"创建文件:"<<m_szFilePath<<endl;

	m_pLogFile = fopen(m_szFilePath,"w");
	m_nFileSize += fprintf(m_pLogFile,"\n\n==================START RUN=======================\n\n");
}

void CLogFile::WriteLog(const char *pBuffer)
{
	if(m_pLogFile == NULL)
		return;

	time_t      atimer;
	atimer = time( NULL );
	struct tm *area = localtime( &atimer );

	m_nFileSize += fprintf(m_pLogFile,"[%04d-%02d-%02d %02d:%02d:%02d] :%s\n",area->tm_year+1900,area->tm_mon+1,area->tm_mday,area->tm_hour,area->tm_min,area->tm_sec,pBuffer);
	if(m_nFileSize > 4096000)
	{
		fclose(m_pLogFile);

		char desFile[256];
		sprintf(desFile,"%s_%04d%02d%02d-%02d:%02d:%02d",m_szFilePath,area->tm_year+1900,area->tm_mon+1,area->tm_mday,area->tm_hour,area->tm_min,area->tm_sec);
		rename(m_szFilePath,desFile);

		m_pLogFile = fopen(m_szFilePath,"w");
		m_nFileSize =0;
	}
	else
	{
		fflush(m_pLogFile);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -