feat: Add system log.
This commit is contained in:
72
src/log/SystemOperationLog.cpp
Normal file
72
src/log/SystemOperationLog.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#include "SystemOperationLog.h"
|
||||
|
||||
#include "appvals/AppGlobalValues.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
namespace
|
||||
{
|
||||
const QString LOG_DIR = "./log/SystemOperationLog";
|
||||
const QString SYS_LOG_SUFFIX = "-sys.log";
|
||||
}
|
||||
|
||||
SystemOperationLog* SystemOperationLog::getInstance()
|
||||
{
|
||||
static SystemOperationLog instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
|
||||
SystemOperationLog::SystemOperationLog()
|
||||
: mCurrentFileName()
|
||||
, mLogFile()
|
||||
, mStreamOut()
|
||||
{
|
||||
QDir log_dir("./");
|
||||
if (!log_dir.exists("log")) log_dir.mkdir("log");
|
||||
if (!log_dir.exists(LOG_DIR)) log_dir.mkdir(LOG_DIR);
|
||||
mCurrentFileName = LOG_DIR + QDate::currentDate().toString("/yyyy-MM-dd") + SYS_LOG_SUFFIX;
|
||||
mLogFile.setFileName(mCurrentFileName);
|
||||
if (mLogFile.exists())
|
||||
{
|
||||
mLogFile.open(QFile::OpenModeFlag::Append | QFile::OpenModeFlag::Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
mLogFile.open(QFile::OpenModeFlag::NewOnly | QFile::OpenModeFlag::Text);
|
||||
}
|
||||
mStreamOut.setDevice(&mLogFile);
|
||||
}
|
||||
|
||||
SystemOperationLog::~SystemOperationLog()
|
||||
{
|
||||
if (mLogFile.isOpen())
|
||||
{
|
||||
mLogFile.flush();
|
||||
mLogFile.close();
|
||||
}
|
||||
}
|
||||
|
||||
void SystemOperationLog::reloadFile()
|
||||
{
|
||||
QString newFileName = LOG_DIR + QDate::currentDate().toString("/yyyy-MM-dd") + SYS_LOG_SUFFIX;
|
||||
if (newFileName == mCurrentFileName && !AppGlobalValues::InProcessing().toBool()) return;
|
||||
mLogFile.close();
|
||||
mLogFile.setFileName(newFileName);
|
||||
if (mLogFile.exists())
|
||||
{
|
||||
mLogFile.open(QFile::OpenModeFlag::Append | QFile::OpenModeFlag::Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
mLogFile.open(QFile::OpenModeFlag::NewOnly | QFile::OpenModeFlag::Text);
|
||||
}
|
||||
mStreamOut.setDevice(&mLogFile);
|
||||
}
|
||||
|
||||
void SystemOperationLog::log(const QString &aOperationText)
|
||||
{
|
||||
reloadFile();
|
||||
QDateTime now = QDateTime::currentDateTime();
|
||||
mStreamOut << now.toString(Qt::DateFormat::ISODateWithMs).replace("T","\t")<<"\t"<<aOperationText<<endl;
|
||||
}
|
||||
28
src/log/SystemOperationLog.h
Normal file
28
src/log/SystemOperationLog.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef SYSTEMOPERATIONLOG_H
|
||||
#define SYSTEMOPERATIONLOG_H
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
#define LOG_SYS_OPERATION(...)\
|
||||
SystemOperationLog::getInstance()->log(__VA_ARGS__);
|
||||
|
||||
class SystemOperationLog
|
||||
{
|
||||
public:
|
||||
static SystemOperationLog* getInstance();
|
||||
void log(const QString& aOperationText);
|
||||
void reloadFile();
|
||||
|
||||
private:
|
||||
SystemOperationLog();
|
||||
~SystemOperationLog();
|
||||
|
||||
private:
|
||||
QString mCurrentFileName;
|
||||
QFile mLogFile;
|
||||
QTextStream mStreamOut;
|
||||
};
|
||||
|
||||
#endif // SYSTEMOPERATIONLOG_H
|
||||
@@ -9,12 +9,13 @@
|
||||
|
||||
namespace
|
||||
{
|
||||
const QString logDir = "./log";
|
||||
const QString logDir = "./log/UserOperationLog";
|
||||
}
|
||||
|
||||
void UserOperationLog::init() {
|
||||
QDir log_dir("./");
|
||||
if (!log_dir.exists(logDir)) log_dir.mkdir("log");
|
||||
if (!log_dir.exists("log")) log_dir.mkdir("log");
|
||||
if (!log_dir.exists(logDir)) log_dir.mkdir(logDir);
|
||||
currentFileName = logDir + QDate::currentDate().toString("/yyyy-MM-dd")+QString("-op.log");
|
||||
logFile.setFileName(currentFileName);
|
||||
if (logFile.exists())
|
||||
|
||||
Reference in New Issue
Block a user