Files
Sun1602/Server/ShopServer/Uitl/Log.cpp
T
2022-10-26 12:25:11 +08:00

143 lines
3.7 KiB
C++

#include "stdafx.h"
#include "log.h"
using namespace WZPUBLIC;
CLog::CLog(void)
{
}
CLog::~CLog(void)
{
}
void CLog::CreateLog(wchar_t* szFilePath, bool bconsole)
{
m_rootLogger = Logger::getRootLogger();
SetLogfilePath(szFilePath, bconsole);
}
void CLog::SetLogfilePath(wchar_t* szFilePath, bool bconsole)
{
LogString strpath, strExpiod, strPattern;
strpath = szFilePath;
strExpiod = L".yyyy-MM-dd-a";
strPattern = L"[%d{yyyy MMM dd HH:mm:ss, SSS}] (%r, %t, %p) %m\r\n";
PatternLayout* lo = new PatternLayout(strPattern);
DailyRollingFileAppender* append = new DailyRollingFileAppender(lo, strpath, strExpiod);
m_rootLogger->addAppender(append);
if(bconsole)
{
ConsoleAppender* app = new ConsoleAppender(lo);
m_rootLogger->addAppender(app);
}
}
void CLog::SetLevel(LOG_LEVEL level)
{
switch(level)
{
case LEVEL_ALL: m_rootLogger->setLevel(Level::getAll()); break;
case LEVEL_FATAL: m_rootLogger->setLevel(Level::getFatal()); break;
case LEVEL_ERROR: m_rootLogger->setLevel(Level::getError()); break;
case LEVEL_WARN: m_rootLogger->setLevel(Level::getWarn()); break;
case LEVEL_INFO: m_rootLogger->setLevel(Level::getInfo()); break;
case LEVEL_DEBUG: m_rootLogger->setLevel(Level::getDebug()); break;
case LEVEL_TRACE: m_rootLogger->setLevel(Level::getTrace()); break;
default: m_rootLogger->setLevel(Level::getOff()); break;//LEVEL_OFF
}
}
void CLog::WriteLog(LOG_LEVEL level, const char* szFormat, ...)
{
//autolock(m_cs);
char szBuf[LOGBUFFER_SIZE] = {0};
va_list list;
va_start (list, szFormat);
StringCchVPrintf (szBuf, LOGBUFFER_SIZE, szFormat, list);
va_end (list);
//std::string strLog = szBuf;
switch(level)
{
case LEVEL_FATAL: m_rootLogger->fatal(szBuf); break;
case LEVEL_ERROR: m_rootLogger->error(szBuf); break;
case LEVEL_WARN: m_rootLogger->warn(szBuf); break;
case LEVEL_INFO: m_rootLogger->info(szBuf); break;
case LEVEL_DEBUG: m_rootLogger->debug(szBuf); break;
case LEVEL_TRACE: m_rootLogger->trace(szBuf); break;
default: m_rootLogger->fatal(szBuf); break; //BILLING_LOG_FATAL
}
//switch(level)
//{
//case LEVEL_FATAL: BILLING_LOG_FATAL(szBuf); break;
//case LEVEL_ERROR: BILLING_LOG_ERROR(szBuf); break;
//case LEVEL_WARN: BILLING_LOG_WARN(szBuf); break;
//case LEVEL_INFO: BILLING_LOG_INFO(szBuf); break;
//case LEVEL_DEBUG: BILLING_LOG_DEBUG(szBuf); break;
//case LEVEL_TRACE: BILLING_LOG_TRACE(szBuf); break;
//default: BILLING_LOG_FATAL(szBuf); break;//BILLING_LOG_FATAL
//}
}
void CLog::WriteOtherLog(char* szFilePath, const char* szFormat, ...)
{
autolock(m_csOtherLog);
SYSTEMTIME time;
GetLocalTime(&time);
// create date
char szDate[MAX_PATH] = {0};
GetDateFormat(LOCALE_USER_DEFAULT, 0, &time, "yyyy-MM-dd", szDate, MAX_PATH);
// create time
char szTime[MAX_PATH] = {0};
sprintf_s(szTime, "[%.4d-%.2d-%.2d %.2d:%.2d:%.2d, %.3d] ",
time.wYear, time.wMonth, time.wDay,
time.wHour, time.wMinute, time.wSecond, time.wMilliseconds);
// create file path & name
char szLogFile[MAX_PATH] = {0};
::GetModuleFileName( NULL, szLogFile, MAX_PATH );
*(strrchr( szLogFile, '\\' ) ) = 0;
strcat_s(szLogFile,260, "\\Logs");
if(INVALID_FILE_ATTRIBUTES == GetFileAttributes(szLogFile))
{
CreateDirectory(szLogFile, NULL); //Logs Æú´õ°¡ ¾øÀ¸¸é »ý¼ºÇÑ´Ù.
}
strcat_s(szLogFile,260, "\\");
strcat_s(szLogFile,260, szDate);
strcat_s(szLogFile,260, "-");
strcat_s(szLogFile,260, szFilePath);
// create log data
char szBuf[LOGBUFFER_SIZE] = {0};
va_list list;
va_start (list, szFormat);
StringCchVPrintf (szBuf, LOGBUFFER_SIZE, szFormat, list);
va_end (list);
FILE* fp = NULL;
if((fp = fopen(szLogFile, "a")) == NULL)
return;
fwrite(szTime, sizeof(char), strlen(szTime), fp);
fwrite(szBuf, sizeof(char), strlen(szBuf), fp);
fclose(fp);
}