#include "UserOperationLog.h" #include "appvals/AppGlobalValues.h" #include "models/User.h" #include #include #include #include namespace { const QString logDir = "./log/UserOperationLog"; } UserOperationLog::UserOperationLog() : QObject() , currentFileName() , logFile() , out() { init(); } UserOperationLog::~UserOperationLog() { if (logFile.isOpen()) { logFile.flush(); logFile.close(); } } void UserOperationLog::init() { QDir log_dir("./"); 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()) { logFile.open(QFile::OpenModeFlag::Append | QFile::OpenModeFlag::Text); } else{ logFile.open(QFile::OpenModeFlag::NewOnly | QFile::OpenModeFlag::Text); } out.setDevice(&logFile); } const char space = ' '; QString addSpace(const char* str) { QString s; for (int i = 0; str[i]!='\0'; ++i) { if (str[i]>='A' && str[i]<='Z' && i>0) { s.append(space); s.append(str[i]); } else{ s.append(str[i]); } } return s; } void UserOperationLog::log(const QString& aOperationText) { reloadFile(); QDateTime now = QDateTime::currentDateTime(); AppGlobalValues::setLastOperationTime(now); QString UserName = (!User::Current() || User::Current()->getUserCode().isEmpty())?"anonymous":User::Current()->getUserCode(); QString operationText = aOperationText; out << now.toString(Qt::DateFormat::ISODateWithMs).replace("T","\t")<<"\t"<getOperationLogExpireDays(); QDateTime currentDate = QDateTime::currentDateTime(); QDateTime deleteDate = currentDate.addDays(-expireDays); QDir dir(logDir); QStringList logFiles = dir.entryList(QStringList() << "*.log", QDir::Files); for(const QString &logFile : logFiles) { QString filePath = logDir + "/" + logFile; QFileInfo fileInfo(filePath); QDateTime fileDate = fileInfo.created(); if (fileDate <= deleteDate) { QFile::remove(filePath); } } }