|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Filtre les messages par niveau minimal et les diffuse aux sinks enregistrés. More...
#include <Logger.h>
Public Member Functions | |
| Logger ()=default | |
| Logger (const Logger &)=delete | |
| Logger & | operator= (const Logger &)=delete |
| void | setMinimumLevel (LogLevel level) |
| Définit le niveau minimal ; les messages moins graves sont ignorés. | |
| LogLevel | minimumLevel () const noexcept |
| void | beginLevelElevation (LogLevel floor) |
Ouvre une élévation temporaire du niveau minimal à au moins floor. | |
| void | endLevelElevation () |
| Ferme une élévation ouverte par beginLevelElevation ; restaure le niveau d'origine lorsque la dernière élévation en cours se ferme. | |
| bool | isEnabled (LogLevel level) const |
| Indique si un niveau passe le filtre courant. | |
| void | addSink (std::unique_ptr< ILogSink > sink) |
| Ajoute un sink (le journaliseur en prend la propriété). | |
| void | clearSinks () |
| Retire tous les sinks. | |
| void | log (LogLevel level, std::string_view message) |
| Diffuse un message aux sinks s'il passe le filtre de niveau. | |
Private Attributes | |
| std::atomic< LogLevel > | _minimumLevel = LogLevel::Trace |
| Lu à chaque message depuis n'importe quel fil, écrit par les élévations temporaires : le type atomique n'est pas cosmétique, un LogLevel nu était une course de données. | |
| std::mutex | _elevationMutex |
| Protège le compteur d'élévations et le niveau mémorisé (voir beginLevelElevation). | |
| int | _elevationDepth = 0 |
| LogLevel | _levelBeforeElevation = LogLevel::Trace |
| std::vector< std::unique_ptr< ILogSink > > | _sinks |
Filtre les messages par niveau minimal et les diffuse aux sinks enregistrés.
Le journaliseur possède ses sinks (RAII). Il n'effectue aucune entrée-sortie lui-même : celle-ci est déléguée aux sinks.
|
default |
|
delete |
| void core::Logger::addSink | ( | std::unique_ptr< ILogSink > | sink | ) |
Ajoute un sink (le journaliseur en prend la propriété).
| void core::Logger::beginLevelElevation | ( | LogLevel | floor | ) |
Ouvre une élévation temporaire du niveau minimal à au moins floor.
Compte les élévations au lieu de mémoriser un niveau par appelant : l'écran Mode IA peut faire tourner un entraînement et une évaluation en même temps, chacun sur son fil, et deux portées qui se chevauchent restauraient alors le niveau que la première avait relevé — laissant le journal muet pour le reste de la session. Le niveau d'origine n'est mémorisé qu'à la première élévation, et restauré à la dernière sortie.
| floor | Niveau minimal souhaité ; un niveau déjà plus strict n'est jamais assoupli. |
| void core::Logger::clearSinks | ( | ) |
Retire tous les sinks.
| void core::Logger::endLevelElevation | ( | ) |
Ferme une élévation ouverte par beginLevelElevation ; restaure le niveau d'origine lorsque la dernière élévation en cours se ferme.
|
nodiscard |
Indique si un niveau passe le filtre courant.
| level | Niveau à tester. |
| void core::Logger::log | ( | LogLevel | level, |
| std::string_view | message ) |
Diffuse un message aux sinks s'il passe le filtre de niveau.
| level | Niveau du message. |
| message | Texte du message. |
|
inlinenodiscardnoexcept |
| void core::Logger::setMinimumLevel | ( | LogLevel | level | ) |
Définit le niveau minimal ; les messages moins graves sont ignorés.
|
private |
|
private |
Protège le compteur d'élévations et le niveau mémorisé (voir beginLevelElevation).
|
private |
|
private |
Lu à chaque message depuis n'importe quel fil, écrit par les élévations temporaires : le type atomique n'est pas cosmétique, un LogLevel nu était une course de données.
|
private |