#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); }