#include "Logger.h" #include "global.h" #include "utils/TimeHelper.h" #include #include #include using namespace std; Logger::Logger() :m_realtime(false) { m_nLogLevel = LogLevelAll; m_LogDao = new LogDao(); m_LogDao->Init(); } //析构函数 Logger::~Logger() { delete m_LogDao; } //写关键信息接口 void Logger::TraceKeyInfo(const char * info, ...) { va_list args; va_start(args, info); Trace(KEYINFOPREFIX, info, args); va_end(args); } //写错误信息 void Logger::TraceError(const char * error, ...) { //判断当前的写日志级别,若设置为不写日志则函数返回 if(m_nLogLevel >= LogLevelStop)return; va_list args; va_start(args, error); Trace(ERRORPREFIX, error, args); va_end(args); } //写警告信息 void Logger::TraceWarning(const char * warnning, ...) { //判断当前的写日志级别,若设置为只写错误信息则函数返回 if(m_nLogLevel >= LogLevelNormal)return; va_list args; va_start(args, warnning); Trace(WARNINGPREFIX, warnning, args); va_end(args); } //写一般信息 void Logger::TraceInfo(const char * info, ...) { //判断当前的写日志级别,若设置只写错误和警告信息则函数返回 if(m_nLogLevel >= LogLevelMid)return; va_list args; va_start(args, info); Trace(INFOPREFIX, info, args); va_end(args); } void Logger::Trace(string prefix, const char *msg, va_list args) { char buffer[1024]; vsprintf_s(buffer, sizeof(buffer), msg, args); string content(buffer); m_LogDao->AddLog(prefix, content); if (m_realtime) { sprintf_s(buffer, sizeof(buffer), "%s %s %s", prefix.c_str(), TimeHelper::GetStrNow().c_str(), content.c_str()); EnterCriticalSection(&m_LogDao->m_LogCs); m_LogDao->m_Logs.push_back(string(buffer)); LeaveCriticalSection(&m_LogDao->m_LogCs); } } //设置写日志级别 void Logger::SetLogLevel(EnumLogLevel nLevel) { m_nLogLevel = nLevel; } /* void Logger::Test() { char sqlbuf[1024]; SQLite::Transaction transaction(*m_pDB); srand(time(0)); for (int i = 0; i < 100;i++) { time_t insertime = 1550550203 + i * 10; sprintf_s(sqlbuf, sizeof(sqlbuf), "INSERT INTO %s(%s,%s,%s,%s,%s,%s,%s,%s,%s) VALUES(%lld,'%s',%u, '%.3f', '%.3f', '%.3f', '%.3f', '%.3f', '%.3f')", STATUS_TABLE_NAME.c_str(), STATUS_FIELD_INSERT_TIME.c_str(), STATUS_FIELD_JOB_ID.c_str(), STATUS_FIELD_LAYER_INDEX.c_str(), STATUS_FIELD_OXYGEN.c_str(), STATUS_FIELD_INNER_TEMP.c_str(), STATUS_FIELD_PLATE_TEMP.c_str(), STATUS_FIELD_WIND_RATE.c_str(), STATUS_FIELD_HUMIDITY.c_str(), STATUS_FIELD_WATER_TEMP.c_str(), insertime, "123", i, (float)(rand() % 100), (float)(rand() % 100), (float)(rand() % 100), (float)(rand() % 100), (float)(rand() % 100), (float)(rand() % 100) ); m_pDB->exec(sqlbuf); } transaction.commit(); }*/ const string Logger::KEYINFOPREFIX = "[KEY ]"; const string Logger::ERRORPREFIX = "[ERROR]"; const string Logger::WARNINGPREFIX= "[WARN ]"; const string Logger::INFOPREFIX = "[INFO ]";