You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
smokeboxidentification/src/common/log.cpp

54 lines
1.5 KiB
C++

#include "log.h"
#pragma execution_character_set("utf-8")
QString LogInfo::m_currtDate = QString();
QString LogInfo::m_folderPath = QString();
QFile* LogInfo::m_fileLog = NULL;
const char* LogInfo::msgHead[] = {
"Debug ",
"Warning ",
"Critical",
"Fatal ",
"Info "
};
void LogInfo::recordLog(QString folderPath)
{
m_folderPath = folderPath;
m_currtDate = QDateTime::currentDateTime().toString("yyyy-MM-dd");
logSysInit(m_folderPath);
qInstallMessageHandler(&myMessageOutput);
}
void LogInfo::myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
QString currtDate = QDateTime::currentDateTime().toString("yyyy-MM-dd");
if (currtDate != m_currtDate)
{
m_currtDate = currtDate;
logSysInit(m_folderPath);
}
QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
if (m_fileLog) {
QTextStream tWrite(m_fileLog);
QString msgText = "%1 | %3 | %2\n";
msgText = msgText.arg(msgHead[type]).arg(msg).arg(currentDateTime);
tWrite << msgText;
}
else {
fprintf(stderr, "%s | %s | %s:%u, %s | %s\n", msgHead[type], currentDateTime.toLocal8Bit().constData(), context.file, context.line, context.function, msg.toLocal8Bit().constData());
}
}
void LogInfo::logSysInit(QString folderPath)
{
QString filePath = folderPath + "log-" + m_currtDate + ".log";
m_fileLog = new QFile(filePath);
if (!m_fileLog->open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
return;
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>myMessageOutput
}