JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
core::Logger Class Reference

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
Loggeroperator= (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

Detailed Description

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.

Constructor & Destructor Documentation

◆ Logger() [1/2]

core::Logger::Logger ( )
default

◆ Logger() [2/2]

core::Logger::Logger ( const Logger & )
delete

Member Function Documentation

◆ addSink()

void core::Logger::addSink ( std::unique_ptr< ILogSink > sink)

Ajoute un sink (le journaliseur en prend la propriété).

◆ beginLevelElevation()

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.

Parameters
floorNiveau minimal souhaité ; un niveau déjà plus strict n'est jamais assoupli.

◆ clearSinks()

void core::Logger::clearSinks ( )

Retire tous les sinks.

◆ endLevelElevation()

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.

◆ isEnabled()

bool core::Logger::isEnabled ( LogLevel level) const
nodiscard

Indique si un niveau passe le filtre courant.

Parameters
levelNiveau à tester.
Returns
true si un message de ce niveau serait diffusé.

◆ log()

void core::Logger::log ( LogLevel level,
std::string_view message )

Diffuse un message aux sinks s'il passe le filtre de niveau.

Parameters
levelNiveau du message.
messageTexte du message.

◆ minimumLevel()

LogLevel core::Logger::minimumLevel ( ) const
inlinenodiscardnoexcept
Returns
Le niveau minimal courant.

◆ operator=()

Logger & core::Logger::operator= ( const Logger & )
delete

◆ setMinimumLevel()

void core::Logger::setMinimumLevel ( LogLevel level)

Définit le niveau minimal ; les messages moins graves sont ignorés.

Member Data Documentation

◆ _elevationDepth

int core::Logger::_elevationDepth = 0
private

◆ _elevationMutex

std::mutex core::Logger::_elevationMutex
private

Protège le compteur d'élévations et le niveau mémorisé (voir beginLevelElevation).

◆ _levelBeforeElevation

LogLevel core::Logger::_levelBeforeElevation = LogLevel::Trace
private

◆ _minimumLevel

std::atomic<LogLevel> core::Logger::_minimumLevel = LogLevel::Trace
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.

◆ _sinks

std::vector<std::unique_ptr<ILogSink> > core::Logger::_sinks
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Diagnostics/Logger.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Diagnostics/Logger.cpp