feat: Add system log.

This commit is contained in:
sunwen
2024-05-31 15:08:24 +08:00
parent e9396c3054
commit e37020d349
8 changed files with 139 additions and 10 deletions

View 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;
}

View 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

View File

@@ -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())