File indexing completed on 2024-05-05 10:08:43
0001 /* 0002 SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QList> 0010 #include <QMetaEnum> 0011 #include <QString> 0012 0013 #include "logMode.h" 0014 #include "logModeFactory.h" 0015 0016 class LogModeFactory; 0017 0018 class LogMode; 0019 class LogModeAction; 0020 class LogLevel; 0021 0022 class Reader; 0023 0024 class GlobalsPrivate; 0025 0026 class Globals : QObject 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 static Globals &instance(); 0032 0033 ~Globals() override; 0034 0035 enum LogLevelIds { 0036 EMERGENCY_LOG_LEVEL_ID = 0, 0037 ALERT_LOG_LEVEL_ID, 0038 CRITICAL_LOG_LEVEL_ID, 0039 ERROR_LOG_LEVEL_ID, 0040 WARNING_LOG_LEVEL_ID, 0041 NOTICE_LOG_LEVEL_ID, 0042 INFORMATION_LOG_LEVEL_ID, 0043 DEBUG_LOG_LEVEL_ID, 0044 NONE_LOG_LEVEL_ID, 0045 0046 LOG_LEVEL_NUM 0047 }; 0048 Q_ENUM(LogLevelIds) 0049 0050 enum DateFormat { LongFormat = 0, ShortFormat, PreciseFormat }; 0051 0052 QString formatDate(DateFormat format, const QDateTime &dateTime) const; 0053 0054 QHash<LogLevelIds, LogLevel *> logLevels() const; 0055 0056 LogLevel *noLogLevel() const; 0057 LogLevel *debugLogLevel() const; 0058 LogLevel *informationLogLevel() const; 0059 LogLevel *noticeLogLevel() const; 0060 LogLevel *warningLogLevel() const; 0061 LogLevel *errorLogLevel() const; 0062 LogLevel *criticalLogLevel() const; 0063 LogLevel *alertLogLevel() const; 0064 LogLevel *emergencyLogLevel() const; 0065 0066 LogLevel *logLevelByPriority(int id); 0067 0068 QMetaEnum &logLevelsMetaEnum() const; 0069 0070 /** 0071 * Allow to add a new Reader for a new log mode 0072 */ 0073 void registerLogModeFactory(LogModeFactory *logModeFactory); 0074 0075 QList<LogMode *> logModes() const; 0076 0077 QList<LogModeAction *> logModeActions() const; 0078 0079 LogMode *findLogMode(const QString &logModeName); 0080 0081 void recreateLogModeActions(); 0082 0083 private: 0084 explicit Globals(); 0085 0086 void setupLogLevels(); 0087 0088 GlobalsPrivate *const d; 0089 };