134 lines
2.9 KiB
C++
134 lines
2.9 KiB
C++
#include "Logger.h"
|
|
#include "global.h"
|
|
#include "utils/TimeHelper.h"
|
|
#include <direct.h>
|
|
#include <io.h>
|
|
#include <ctime>
|
|
|
|
using namespace std;
|
|
Logger::Logger()
|
|
:m_realtime(false)
|
|
{
|
|
m_nLogLevel = LogLevelAll;
|
|
m_LogDao = new LogDao();
|
|
}
|
|
|
|
|
|
//析构函数
|
|
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 ]"; |