143 lines
3.7 KiB
C++
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);
|
|
}
|