SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
Logger.hxx
См. документацию.
1
17#pragma once
18
19#include "../IObserver.hxx"
20#include "../Event.hxx"
21
22#include <string>
23#include <memory>
24#include <unordered_map>
25#include <mutex>
26
35 * @russian
36 * @namespace svcs::services
37 * @brief Компоненты сервисного слоя и инфраструктурные сервисы.
38 * @details Содержит основные инфраструктурные сервисы, включая систему событий,
39 * механизм уведомлений, реализацию шаблона Observer и другие сквозные задачи,
40 * которые поддерживают операции СКВ.
41 */
42namespace svcs::services {
43
55enum class LogLevel {
61
63 DEBUG = 0,
64
68 *
69 * @russian
70 * @brief Общая информация о потоке выполнения.
71 */
72 INFO = 1,
73
81 WARN = 2,
82
90 ERROR = 3,
91
99 FATAL = 4
100};
101
115class Logger : public IObserver {
116private:
124 std::string name_;
125
133 LogLevel log_level_;
134
142 std::string pattern_;
143
151 static std::unordered_map<std::string, std::shared_ptr<Logger>> instances_;
152
160 static std::mutex instances_mutex_;
161
162public:
174 explicit Logger(const std::string& name);
175
183 ~Logger() override;
184
185 // -------------------------------------------------------------------------
186 // IObserver Methods
187 // -------------------------------------------------------------------------
188
200 void update(const Event& event) override;
201
215 void notify(const Event& event) override;
216
217 // -------------------------------------------------------------------------
218 // Static Singleton Access Methods
219 // -------------------------------------------------------------------------
220
229
234 static std::shared_ptr<Logger> getInstance(const std::string& name);
235
245 static void clearInstances();
246
247 // -------------------------------------------------------------------------
248 // Direct Logging Methods
249 // -------------------------------------------------------------------------
250
260 void debug(const std::string& message);
261
271 void info(const std::string& message);
272
282 void warn(const std::string& message);
283
293 void error(const std::string& message);
294
304 void fatal(const std::string& message);
305
306 // -------------------------------------------------------------------------
307 // Configuration & Utility
308 // -------------------------------------------------------------------------
309
319 void setLevel(LogLevel level);
320
330 [[nodiscard]] LogLevel getLevel() const;
331
341 void setPattern(const std::string& pattern);
342
350 void flush();
351
352private:
364 void log(LogLevel level, const std::string& message);
365
379 std::string formatMessage(LogLevel level, const std::string& message);
380
392 std::string levelToString(LogLevel level);
393};
394
395}
Определяет структуру события, используемую для уведомлений по шаблону Observer.
Определяет интерфейс для компонента шаблона Observer.
Интерфейс Observer (Абстрактный Базовый Класс).
Определения IObserver.hxx:31
Потокобезопасный Singleton класс, отвечающий за логирование системных событий.
Определения Logger.hxx:68
Logger(const std::string &name)
Конструктор.
Определения Logger.cxx:26
void flush()
Принудительно записывает весь буферизованный вывод логов немедленно (например, на диск).
Определения Logger.cxx:211
static void clearInstances()
Очищает все зарегистрированные Singleton экземпляры.
Определения Logger.cxx:205
void warn(const std::string &message)
Логирует сообщение на уровне WARN.
Определения Logger.cxx:104
void fatal(const std::string &message)
Логирует сообщение на уровне FATAL.
Определения Logger.cxx:116
void update(const Event &event) override
Метод, вызываемый Subject для уведомления наблюдателя событием.
Определения Logger.cxx:38
~Logger() override
Деструктор.
Определения Logger.cxx:32
void notify(const Event &event) override
Метод, вызываемый subject для уведомления наблюдателя.
Определения Logger.cxx:73
void debug(const std::string &message)
Логирует сообщение на уровне DEBUG.
Определения Logger.cxx:92
void setPattern(const std::string &pattern)
Устанавливает шаблон форматирования вывода для сообщений.
Определения Logger.cxx:200
LogLevel getLevel() const
Получает текущий минимальный уровень логов.
Определения Logger.cxx:196
static std::shared_ptr< Logger > getInstance(const std::string &name)
Получает Singleton экземпляр Logger для заданного имени.
Определения Logger.cxx:78
void error(const std::string &message)
Логирует сообщение на уровне ERROR.
Определения Logger.cxx:110
void setLevel(LogLevel level)
Устанавливает минимальный уровень логов для этого экземпляра.
Определения Logger.cxx:192
void info(const std::string &message)
Логирует сообщение на уровне INFO.
Определения Logger.cxx:98
Компоненты сервисного слоя и инфраструктурные сервисы.
LogLevel
Определяет уровни серьезности для лог-сообщений.
Определения Logger.hxx:35
@ FATAL
Очень серьезные события ошибок, которые, вероятно, приведут к прерыванию работы приложения.
Определения Logger.hxx:59
@ WARN
Потенциально проблемные ситуации.
Определения Logger.hxx:49
@ INFO
Общая информация о потоке выполнения.
Определения Logger.hxx:44
@ ERROR
События ошибок, которые могут позволить приложению продолжить работу.
Определения Logger.hxx:54
@ DEBUG
Подробная информация для отладки.
Определения Logger.hxx:39
Структура, описывающая событие, опубликованное ядром VCS.
Определения Event.hxx:27