From 2c4783674ee0190ebfc0b8e59e6b7a00ca3e96cd Mon Sep 17 00:00:00 2001 From: sunwen Date: Mon, 29 Jul 2024 17:46:31 +0800 Subject: [PATCH] feat: merge the UserOperationLog and SystemOperationLog in LogManager. --- src/UserOperationLogForm.cpp | 9 ++-- src/device/DeviceManager.cpp | 9 ++-- src/device/DmsSyncAction.cpp | 2 + src/device/UsctStateManager.cpp | 2 +- src/dialogs/AccountFormDialog.cpp | 2 +- src/dialogs/ChangePasswordFormDialog.cpp | 2 +- src/dialogs/GUIMessageDialog.cpp | 2 +- src/dialogs/GetWorkListDialog.cpp | 2 +- src/dialogs/IpSettingsDialog.cpp | 2 +- src/dialogs/MppsSettingsDialog.cpp | 2 +- src/dialogs/PacsSettingsDialog.cpp | 2 +- src/dialogs/ReconSettingsDialog.cpp | 2 +- src/dialogs/WorklistSettingsDialog.cpp | 2 +- src/forms/scan/ScanFormWidget.cpp | 2 +- src/forms/select/SelectFormWidget.cpp | 2 +- src/forms/settings/AccountTableForm.cpp | 2 +- src/forms/settings/GeneralForm.cpp | 2 +- src/forms/settings/SystemCorrectionForm.cpp | 2 +- src/log/LogManager.cpp | 47 +++++++++++++++++++++ src/log/LogManager.h | 41 ++++++++++++++++++ src/log/SystemOperationLog.cpp | 10 +---- src/log/SystemOperationLog.h | 16 +++---- src/log/UserOperationLog.cpp | 32 ++++++++------ src/log/UserOperationLog.h | 47 +++------------------ src/main.cpp | 7 +-- src/recon/ReconManager.cpp | 2 +- src/windows/LoginDialog.cpp | 2 +- 27 files changed, 150 insertions(+), 104 deletions(-) create mode 100644 src/log/LogManager.cpp create mode 100644 src/log/LogManager.h diff --git a/src/UserOperationLogForm.cpp b/src/UserOperationLogForm.cpp index 65f6c22..b6bb85a 100644 --- a/src/UserOperationLogForm.cpp +++ b/src/UserOperationLogForm.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "log/LogFileTableModel.h" #include #include @@ -98,10 +98,9 @@ UserOperationLogForm::~UserOperationLogForm() { } - -void UserOperationLogForm::loadUserOperationLog() { - - QString filePath = UserOperationLog::Default()->currentLogFile(); +void UserOperationLogForm::loadUserOperationLog() +{ + QString filePath = LogManager::getInstance()->getCurrentUserOperationLogFile(); mDateButton->setText(fileNameToDate(filePath)); loadUserOperationLog(filePath, fileNameToDate(filePath)); mSelectedDateStr = fileNameToDate(filePath); diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index 0a32e95..bf06bca 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -24,7 +24,7 @@ #include "dialogs/MultyMessageDialog.h" #include "UsctStateManager.h" #include "utilities/ScanProcessSequence.h" -#include "log/SystemOperationLog.h" +#include "log/LogManager.h" #define TRIGGER_EVENT EventCenter::Default()->triggerEvent @@ -468,6 +468,7 @@ void DeviceManager::stopFullScan() if(!result.mIsSucessful) { THROW_ERROR(result.mData); + prepareFinishScan(false, ""); return; } @@ -646,6 +647,7 @@ QString DeviceManager::getSoftwareVersion() void DeviceManager::processReceiveDMSInfoResult(int aServerID, int aActionID, const QString& aContents) { qDebug()<<"processReceiveDMSInfoResult " < GUI : %1-%2, Message:%3").arg(aServerID).arg(aActionID).arg(aContents)); switch(aServerID) { case USRV_SCAN : @@ -772,7 +774,6 @@ void DeviceManager::processAlarm(const QString& aAlarm) int alarmCode = jsonObj["code"].toInt(); QString alarm = tr("Error: ") + QString::number(alarmCode); qDebug()<<"processAlarm : "<= 400 && alarmCode < 500) { if(mIsScanning) @@ -807,7 +808,7 @@ void DeviceManager::processGetSoftwareVersion(const QString& aSoftwareVersion) void DeviceManager::scanTimeout() { - prepareFinishScan(false, "Dms connection timeout!"); + prepareFinishScan(false, tr("DMS connection error")); } DeviceStatus DeviceManager::getDeviceStatus() @@ -860,7 +861,6 @@ bool DeviceManager::startFullScan(const QString& aPatientInfo) return false; } mCurrentScanMeasurementID = jsonObj["measurement id"].toString(); - //LOG_SYS_OPERATION("Start full scan succeed.") return true; } @@ -1341,7 +1341,6 @@ bool DeviceManager::startAutoLocate() emit startAutoLocateResult(true); mEffectivePositionCount = 0; mGetAutoLocatePositionTimer = startTimer(1000); - //LOG_SYS_OPERATION("Start auto locate succeed.") return true; } } diff --git a/src/device/DmsSyncAction.cpp b/src/device/DmsSyncAction.cpp index 92465a9..2510b96 100644 --- a/src/device/DmsSyncAction.cpp +++ b/src/device/DmsSyncAction.cpp @@ -1,5 +1,6 @@ #include "DmsSyncAction.h" #include "dms_mq.h" +#include "log/LogManager.h" #include #include @@ -45,6 +46,7 @@ DmsSyncActionResult DmsSyncAction::execute() DmsSyncActionResult result(false, "mq error"); return result; } + LOG_SYS_OPERATION(QString("GUI -> DMS : %1-%2, Message:%3").arg(mServerId).arg(mActionId).arg(mSendData)); if(!waitUntilSignalReceived()) { DmsSyncActionResult result(false, "time out"); diff --git a/src/device/UsctStateManager.cpp b/src/device/UsctStateManager.cpp index f449e21..5a8e2e6 100644 --- a/src/device/UsctStateManager.cpp +++ b/src/device/UsctStateManager.cpp @@ -1,7 +1,7 @@ #include "UsctStateManager.h" #include "event/EventCenter.h" -#include "log/SystemOperationLog.h" +#include "log/LogManager.h" #include "appvals/AppGlobalValues.h" UsctStateManager* UsctStateManager::getInstance() diff --git a/src/dialogs/AccountFormDialog.cpp b/src/dialogs/AccountFormDialog.cpp index 43805e6..b8671e8 100644 --- a/src/dialogs/AccountFormDialog.cpp +++ b/src/dialogs/AccountFormDialog.cpp @@ -9,7 +9,7 @@ #include #include "event/EventCenter.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "db/SQLHelper.h" #include "models/User.h" #include "components/ULineEdit.h" diff --git a/src/dialogs/ChangePasswordFormDialog.cpp b/src/dialogs/ChangePasswordFormDialog.cpp index 7483b8c..f7c1b0d 100644 --- a/src/dialogs/ChangePasswordFormDialog.cpp +++ b/src/dialogs/ChangePasswordFormDialog.cpp @@ -6,7 +6,7 @@ #include "components/ULineEdit.h" #include "models/User.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" ChangePasswordFormDialog::ChangePasswordFormDialog(QWidget* parent, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f) diff --git a/src/dialogs/GUIMessageDialog.cpp b/src/dialogs/GUIMessageDialog.cpp index 35df5f6..ca426c2 100644 --- a/src/dialogs/GUIMessageDialog.cpp +++ b/src/dialogs/GUIMessageDialog.cpp @@ -5,7 +5,7 @@ #include #include "event/EventCenter.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" GUIMessageDialog::GUIMessageDialog(QWidget *parent) : QDialog(parent) diff --git a/src/dialogs/GetWorkListDialog.cpp b/src/dialogs/GetWorkListDialog.cpp index 21e4e44..55b3f76 100644 --- a/src/dialogs/GetWorkListDialog.cpp +++ b/src/dialogs/GetWorkListDialog.cpp @@ -16,7 +16,7 @@ #include "components/ULineEdit.h" #include "action/GetWorkListAction.h" #include "action/ActionCreator.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "event/EventCenter.h" GetWorkListDialog::GetWorkListDialog(QSqlTableModel* aSqlModel, QTableView* aTableView, QWidget* aParent, Qt::WindowFlags aFlags) diff --git a/src/dialogs/IpSettingsDialog.cpp b/src/dialogs/IpSettingsDialog.cpp index 712246e..52f4e7d 100644 --- a/src/dialogs/IpSettingsDialog.cpp +++ b/src/dialogs/IpSettingsDialog.cpp @@ -5,7 +5,7 @@ #include "utilities/InputFormatValidator.h" #include "device/networkmanager.h" #include "DialogManager.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include #include diff --git a/src/dialogs/MppsSettingsDialog.cpp b/src/dialogs/MppsSettingsDialog.cpp index 5b0c0e7..abb6e1a 100644 --- a/src/dialogs/MppsSettingsDialog.cpp +++ b/src/dialogs/MppsSettingsDialog.cpp @@ -4,7 +4,7 @@ #include "components/ErrorLabel.h" #include "dialogs/DicomSettingsArea.h" #include "json/jsonobject.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include diff --git a/src/dialogs/PacsSettingsDialog.cpp b/src/dialogs/PacsSettingsDialog.cpp index 42726ed..a1eac3b 100644 --- a/src/dialogs/PacsSettingsDialog.cpp +++ b/src/dialogs/PacsSettingsDialog.cpp @@ -1,7 +1,7 @@ #include "PacsSettingsDialog.h" #include "dialogs/DicomSettingsArea.h" #include "json/jsonobject.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "components/ErrorLabel.h" #include diff --git a/src/dialogs/ReconSettingsDialog.cpp b/src/dialogs/ReconSettingsDialog.cpp index b8ebd0e..15c6cc8 100644 --- a/src/dialogs/ReconSettingsDialog.cpp +++ b/src/dialogs/ReconSettingsDialog.cpp @@ -4,7 +4,7 @@ #include "dialogs/DicomSettingsArea.h" #include "json/jsonobject.h" #include "recon/ReconManager.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include diff --git a/src/dialogs/WorklistSettingsDialog.cpp b/src/dialogs/WorklistSettingsDialog.cpp index c7c25ec..727e94c 100644 --- a/src/dialogs/WorklistSettingsDialog.cpp +++ b/src/dialogs/WorklistSettingsDialog.cpp @@ -3,7 +3,7 @@ #include "components/ErrorLabel.h" #include "dialogs/DicomSettingsArea.h" #include "json/jsonobject.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include #include diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index 32cd274..e97d3f9 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -13,7 +13,7 @@ #include "forms/scan/PatientInformationForm.h" #include "event/EventCenter.h" #include "dialogs/DialogManager.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "json/jsonobject.h" #include "device/DeviceManager.h" #include "dicom/WorkListManager.h" diff --git a/src/forms/select/SelectFormWidget.cpp b/src/forms/select/SelectFormWidget.cpp index f8e36e0..7a1cc92 100644 --- a/src/forms/select/SelectFormWidget.cpp +++ b/src/forms/select/SelectFormWidget.cpp @@ -17,7 +17,7 @@ #include "db/SQLHelper.h" #include "event/EventCenter.h" #include "dialogs/DialogManager.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "components/VerticalTextToolButton.h" #include "PatientAddDateDelegate.h" #include "dicom/WorkListManager.h" diff --git a/src/forms/settings/AccountTableForm.cpp b/src/forms/settings/AccountTableForm.cpp index cdd54d3..4735d2b 100644 --- a/src/forms/settings/AccountTableForm.cpp +++ b/src/forms/settings/AccountTableForm.cpp @@ -11,7 +11,7 @@ #include "models/User.h" #include "components/SlideTableView.h" #include "event/EventCenter.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" AccountTableForm::AccountTableForm(QWidget* aParent) : QWidget(aParent) diff --git a/src/forms/settings/GeneralForm.cpp b/src/forms/settings/GeneralForm.cpp index 4c801ec..65cd821 100644 --- a/src/forms/settings/GeneralForm.cpp +++ b/src/forms/settings/GeneralForm.cpp @@ -18,7 +18,7 @@ #include "components/ListBox.h" #include "components/ImageSwitch.h" #include "components/BatteryWidget.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "utilities/DiskInfoWorker.h" #include "utilities/GetLockScreenTimeHelper.h" #include "utilities/GetProtocalHelper.h" diff --git a/src/forms/settings/SystemCorrectionForm.cpp b/src/forms/settings/SystemCorrectionForm.cpp index 8aa18fb..50ad84d 100644 --- a/src/forms/settings/SystemCorrectionForm.cpp +++ b/src/forms/settings/SystemCorrectionForm.cpp @@ -2,7 +2,7 @@ #include "db/SQLHelper.h" #include "event/EventCenter.h" #include "dialogs/DialogManager.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include #include diff --git a/src/log/LogManager.cpp b/src/log/LogManager.cpp new file mode 100644 index 0000000..9c79b45 --- /dev/null +++ b/src/log/LogManager.cpp @@ -0,0 +1,47 @@ +#include "LogManager.h" + +#include + +LogManager* LogManager::getInstance() +{ + static LogManager instance; + return &instance; +} + +LogManager::LogManager() + : QObject() + , mThread(new QThread()) + , mSysLog(new SystemOperationLog()) + , mUserLog(new UserOperationLog()) +{ + mSysLog->moveToThread(mThread); + mUserLog->moveToThread(mThread); + connect(this, &LogManager::doWriteSystemOperationLog, mSysLog, &SystemOperationLog::log); + connect(this, &LogManager::doWriteUserOperationLog, mUserLog, &UserOperationLog::log); + mThread->start(); +} + +LogManager::~LogManager() +{ + mThread->quit(); + mThread->wait(); + + delete mUserLog; + delete mSysLog; + mThread->deleteLater(); +} + +void LogManager::writeSystemOperationLog(const QString& aMessage) +{ + emit doWriteSystemOperationLog(aMessage); +} + +void LogManager::writeUserOperationLog(const QString& aMessage) +{ + emit doWriteUserOperationLog(aMessage); +} + +QString LogManager::getCurrentUserOperationLogFile() +{ + return mUserLog->currentLogFile(); +} diff --git a/src/log/LogManager.h b/src/log/LogManager.h new file mode 100644 index 0000000..a52f2bc --- /dev/null +++ b/src/log/LogManager.h @@ -0,0 +1,41 @@ +#ifndef LOGMANAGER_H +#define LOGMANAGER_H + +#include + +#include "SystemOperationLog.h" +#include "UserOperationLog.h" + +class QThread; + +#define LOG_SYS_OPERATION(...)\ +LogManager::getInstance()->writeSystemOperationLog(__VA_ARGS__); + + +#define LOG_USER_OPERATION(...)\ +LogManager::getInstance()->writeUserOperationLog(__VA_ARGS__); + +class LogManager : public QObject +{ + Q_OBJECT +public: + static LogManager* getInstance(); + void writeSystemOperationLog(const QString& aMessage); + void writeUserOperationLog(const QString& aMessage); + QString getCurrentUserOperationLogFile(); + +signals: + void doWriteSystemOperationLog(const QString& aMessage); + void doWriteUserOperationLog(const QString& aMessage); + +private: + LogManager(); + ~LogManager(); + +private: + QThread* mThread; + SystemOperationLog* mSysLog; + UserOperationLog* mUserLog; +}; + +#endif // LOGMANAGER_H diff --git a/src/log/SystemOperationLog.cpp b/src/log/SystemOperationLog.cpp index d94f6c0..d1d48b6 100644 --- a/src/log/SystemOperationLog.cpp +++ b/src/log/SystemOperationLog.cpp @@ -10,15 +10,9 @@ namespace const QString SYS_LOG_SUFFIX = "-sys.log"; } -SystemOperationLog* SystemOperationLog::getInstance() -{ - static SystemOperationLog instance; - return &instance; -} - - SystemOperationLog::SystemOperationLog() - : mCurrentFileName() + : QObject() + , mCurrentFileName() , mLogFile() , mStreamOut() { diff --git a/src/log/SystemOperationLog.h b/src/log/SystemOperationLog.h index 04bba81..544fc49 100644 --- a/src/log/SystemOperationLog.h +++ b/src/log/SystemOperationLog.h @@ -1,23 +1,21 @@ #ifndef SYSTEMOPERATIONLOG_H #define SYSTEMOPERATIONLOG_H +#include #include #include #include -#define LOG_SYS_OPERATION(...)\ -SystemOperationLog::getInstance()->log(__VA_ARGS__); - -class SystemOperationLog +class SystemOperationLog : public QObject { + Q_OBJECT public: - static SystemOperationLog* getInstance(); - void log(const QString& aOperationText); + SystemOperationLog(); + ~SystemOperationLog(); void reloadFile(); -private: - SystemOperationLog(); - ~SystemOperationLog(); +public slots: + void log(const QString& aOperationText); private: QString mCurrentFileName; diff --git a/src/log/UserOperationLog.cpp b/src/log/UserOperationLog.cpp index a117b52..0578fcc 100644 --- a/src/log/UserOperationLog.cpp +++ b/src/log/UserOperationLog.cpp @@ -12,6 +12,24 @@ 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"); @@ -44,20 +62,6 @@ QString addSpace(const char* str) return s; } - -QString getOperationName(UserOperation operation) -{ - switch (operation) { - #define ADD_OPERATION(name)\ - case name: return addSpace(#name); - USER_OPERATIONS() - #undef ADD_OPERATION - default: - return "unknow error"; - } - -} - void UserOperationLog::log(const QString& aOperationText) { reloadFile(); diff --git a/src/log/UserOperationLog.h b/src/log/UserOperationLog.h index 2ec3489..606d582 100644 --- a/src/log/UserOperationLog.h +++ b/src/log/UserOperationLog.h @@ -1,53 +1,18 @@ #ifndef GUI_USEROPERATIONLOG_H #define GUI_USEROPERATIONLOG_H +#include #include #include #include -#define USER_OPERATIONS()\ -ADD_OPERATION(Login)\ -ADD_OPERATION(Logout)\ -ADD_OPERATION(ChangePassword)\ -ADD_OPERATION(ChangeUserName)\ -ADD_OPERATION(AddPatient)\ -ADD_OPERATION(ChangePatientInfo)\ -ADD_OPERATION(DeletePatient)\ -ADD_OPERATION(SelectPatient)\ -ADD_OPERATION(StartRefresh)\ -ADD_OPERATION(StopScan)\ -ADD_OPERATION(StopPreview)\ -ADD_OPERATION(StartPreview)\ -ADD_OPERATION(StartScan)\ -ADD_OPERATION(ConfirmError)\ -ADD_OPERATION(AdminChangeAcountInformation) - -#define LOG_USER_OPERATION(...)\ -UserOperationLog::Default()->log(__VA_ARGS__); - - -enum UserOperation{ -#define ADD_OPERATION(name) name,\ - - USER_OPERATIONS() -#undef ADD_OPERATION -}; -class UserOperationLog { +class UserOperationLog : public QObject +{ + Q_OBJECT public: - UserOperationLog(){} - ~UserOperationLog(){ - if (logFile.isOpen()) - { - logFile.flush(); - logFile.close(); - } - } - + UserOperationLog(); + ~UserOperationLog(); void init(); - static UserOperationLog* Default(){ - static UserOperationLog d; - return &d; - } static void cleanHistoryLog(); static QStringList getHistoryLogFiles(); diff --git a/src/main.cpp b/src/main.cpp index 251d83e..a90125c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,8 +7,6 @@ #include #include #include -#include -#include "log/UserOperationLog.h" #include #include #include "dialogs/DialogManager.h" @@ -20,7 +18,7 @@ #include "utilities/TouchScreenSignalSender.h" #include "keyboard/KeyboardManager.h" #include "appvals/AppGlobalValues.h" -#include "log/SystemOperationLog.h" +#include "log/LogManager.h" #include QString loadFontFromFile(QString path) @@ -95,9 +93,8 @@ int main(int argc, char* argv[]) AppGlobalValues::setDBconnected(false); MainWindow w; DialogManager::Default()->init(&w); - UserOperationLog::Default()->init(); + LogManager::getInstance(); LOG_USER_OPERATION("GUI Started"); - SystemOperationLog::getInstance(); QObject::connect(TouchScreenSignalSender::getInstance(), SIGNAL(touchScreen()), Locker::getInstance(), SLOT(refreshTimer())); // QList gestures; diff --git a/src/recon/ReconManager.cpp b/src/recon/ReconManager.cpp index fc080a3..00f0d73 100644 --- a/src/recon/ReconManager.cpp +++ b/src/recon/ReconManager.cpp @@ -1,7 +1,7 @@ #include "ReconManager.h" #include "ReconClient.h" #include "json/jsonobject.h" -#include "log/SystemOperationLog.h" +#include "log/LogManager.h" #include #include "QDebug" diff --git a/src/windows/LoginDialog.cpp b/src/windows/LoginDialog.cpp index 4efbd41..d0c6581 100644 --- a/src/windows/LoginDialog.cpp +++ b/src/windows/LoginDialog.cpp @@ -10,7 +10,7 @@ #include "event/EventCenter.h" #include "dialogs/DialogManager.h" #include "models/User.h" -#include "log/UserOperationLog.h" +#include "log/LogManager.h" #include "json/jsonobject.h" #include "components/ULineEdit.h" #include "appvals/AppGlobalValues.h"