JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
Logger.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <atomic>
7#include <memory>
8#include <mutex>
9#include <string_view>
10#include <vector>
11
14
19
20namespace core {
21
28class Logger {
29public:
30 Logger() = default;
31
32 Logger(const Logger&) = delete;
33 Logger& operator=(const Logger&) = delete;
34
36 void setMinimumLevel(LogLevel level);
37
39 [[nodiscard]] LogLevel minimumLevel() const noexcept {
40 return _minimumLevel.load(std::memory_order_relaxed);
41 }
42
53 void beginLevelElevation(LogLevel floor);
54
57 void endLevelElevation();
58
64 [[nodiscard]] bool isEnabled(LogLevel level) const;
65
67 void addSink(std::unique_ptr<ILogSink> sink);
68
70 void clearSinks();
71
77 void log(LogLevel level, std::string_view message);
78
79private:
82 std::atomic<LogLevel> _minimumLevel = LogLevel::Trace;
84 std::mutex _elevationMutex;
87 std::vector<std::unique_ptr<ILogSink>> _sinks;
88};
89
94[[nodiscard]] Logger& defaultLogger();
95
96} // namespace core
Interface d'une destination de journalisation.
Niveaux de journalisation, par gravité croissante.
Filtre les messages par niveau minimal et les diffuse aux sinks enregistrés.
Definition Logger.h:28
void clearSinks()
Retire tous les sinks.
Definition Logger.cpp:47
void log(LogLevel level, std::string_view message)
Diffuse un message aux sinks s'il passe le filtre de niveau.
Definition Logger.cpp:52
void addSink(std::unique_ptr< ILogSink > sink)
Ajoute un sink (le journaliseur en prend la propriété).
Definition Logger.cpp:43
void beginLevelElevation(LogLevel floor)
Ouvre une élévation temporaire du niveau minimal à au moins floor.
Definition Logger.cpp:19
bool isEnabled(LogLevel level) const
Indique si un niveau passe le filtre courant.
Definition Logger.cpp:15
std::vector< std::unique_ptr< ILogSink > > _sinks
Definition Logger.h:87
Logger & operator=(const Logger &)=delete
void setMinimumLevel(LogLevel level)
Définit le niveau minimal ; les messages moins graves sont ignorés.
Definition Logger.cpp:11
std::atomic< LogLevel > _minimumLevel
Lu à chaque message depuis n'importe quel fil, écrit par les élévations temporaires : le type atomiqu...
Definition Logger.h:82
std::mutex _elevationMutex
Protège le compteur d'élévations et le niveau mémorisé (voir beginLevelElevation).
Definition Logger.h:84
int _elevationDepth
Definition Logger.h:85
Logger()=default
void endLevelElevation()
Ferme une élévation ouverte par beginLevelElevation ; restaure le niveau d'origine lorsque la dernièr...
Definition Logger.cpp:32
Logger(const Logger &)=delete
LogLevel minimumLevel() const noexcept
Definition Logger.h:39
LogLevel _levelBeforeElevation
Definition Logger.h:86
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Logger & defaultLogger()
Journaliseur global de l'application (utilisé par les macros de log).
Definition Logger.cpp:62
LogLevel
Niveau d'un message de journalisation (ordre croissant de gravité).
Definition LogLevel.h:14
@ Trace
Détails fins de débogage.
Definition LogLevel.h:15