/*! * * Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. * \copyright \n * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n * IN PART OR IN WHOLE, \n * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n * * \file logger.h * \date 2019/09/30 * \author Behrouz NematiPour * */ #pragma once // Qt #include #include // Project #include "main.h" // Define #define _Logger Storage::Logger::I() #define LOG_DATUM(vCONTENT) _Logger->doLog(vCONTENT, Storage::Logger::eLogDatum) #define LOG_EVENT(vCONTENT) _Logger->doLog(vCONTENT, Storage::Logger::eLogEvent) #define LOG_ERROR(vCONTENT) _Logger->doLog(vCONTENT, Storage::Logger::eLogError) namespace Storage { class Logger : public QObject { Q_OBJECT public: enum LogType_Enum { eLogDatum, eLogEvent, eLogError, }; private: QDir _dir; QHash _logPathNames; QHash _logBasePathNames { { eLogDatum, "log/event/" }, // "log/datum/" { eLogEvent, "log/event/" }, { eLogError, "log/error/" }, }; QHash _logPrefix { { eLogDatum, "Datum" }, { eLogEvent, "Event" }, { eLogError, "Error" }, }; const char *_logBasePathName = "/media/sd-card/"; const char *_logBasePathNameExport = "/media/sd-card/log/"; const char *_logFileName = "denali.log"; const char *_dateFormat = "yyyy_MM_dd"; const char *_timeFormat = "HH:mm:ss"; const char *_prefixSeparator = ": "; const char *_dateSeparator = "_"; const char *_timeSeparator = " , "; // Singleton SINGLETON_DECL(Logger) public: bool init(); void quit(); private: void initConnections(); void checkLogPath (); void setLogBasePath(bool vUseApplicationDirPath = false); bool setLogPath (); bool setLogPath (LogType_Enum vLogType); bool log(const QString &vContent, LogType_Enum vLogType); signals: void didLog(bool ok); public slots: void doLog(const QString &vContent, LogType_Enum vLogType); void doExportLog(); }; }