Index: sources/storage/logger.h =================================================================== diff -u -r56d00a82669a7a2c00ab90109a89dbec8db27527 -rb9c5b0b3afc3b34d4980ecc4f023f498f80dafbc --- sources/storage/logger.h (.../logger.h) (revision 56d00a82669a7a2c00ab90109a89dbec8db27527) +++ sources/storage/logger.h (.../logger.h) (revision b9c5b0b3afc3b34d4980ecc4f023f498f80dafbc) @@ -16,6 +16,7 @@ // Qt #include #include +#include // Project #include "main.h" @@ -24,10 +25,13 @@ // Define #define _Logger Storage::Logger::I() -#define LOG_DATUM(vCONTENT) Storage::Logger::I().concurrentLog(vCONTENT, Storage::Logger::LogType::eLogDatum) -#define LOG_EVENT(vCONTENT) Storage::Logger::I().concurrentLog(vCONTENT, Storage::Logger::LogType::eLogEvent) -#define LOG_ERROR(vCONTENT) Storage::Logger::I().concurrentLog(vCONTENT, Storage::Logger::LogType::eLogError) +#define LOG_EVENT(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogEvent) +#define LOG_ERROR(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogError) +#define LOG_DATUM(vCONTENT) emit Storage::Logger::I().didLog(vCONTENT, Storage::Logger::LogType::eLogDatum) +// forward declarations +class tst_logging; + namespace Storage { /*! @@ -44,25 +48,28 @@ { Q_OBJECT + // friends + friend class ::tst_logging; + public: enum LogType { - eLogDatum, eLogEvent, eLogError, + eLogDatum, }; private: QDir _dir; QHash _logPathNames; QHash _logBasePathNames { - { eLogDatum, "log/event/" }, // "log/datum/" { eLogEvent, "log/event/" }, { eLogError, "log/error/" }, + { eLogDatum, "log/event/" }, // "log/datum/" }; QHash _logPrefix { - { eLogDatum, "Datum" }, { eLogEvent, "Event" }, { eLogError, "Error" }, + { eLogDatum, "Datum" }, }; const char *_dateFormat = "yyyy_MM_dd"; @@ -72,31 +79,51 @@ const char *_dateSeparator = "_" ; const char *_timeSeparator = " , "; - bool _init = false; + QString _logFileName = ""; + + QFutureWatcher _exportWatcher; + + QThread *_thread = nullptr; + bool _init = false; + // Singleton SINGLETON(Logger) -public: +public slots: bool init(); + bool init(QThread &vThread); + +private slots: void quit(); - private: void initConnections(); + void initThread(QThread &vThread); + void quitThread(); + private: -// setting up +// ----- setting up void checkLogPath (); void setLogBasePath (bool vUseApplicationDirPath = false); bool setLogPath (); bool setLogPath (LogType vLogType); +// ----- Export structure public slots: - void concurrentLog (const QString &vContent, LogType vLogType); + bool concurrentExport(); +private slots: + void onExport(); +signals: + void didExport(); +// ----- logging structure +private slots: + void onLog(const QString &vContent, LogType vLogType); private: void log (const QString &vContent, LogType vLogType); - +signals: + void didLog (const QString &vContent, LogType vLogType); }; }