Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches

Centralized logging system with configurable output and formatting. More...

#include <logger.hpp>

Public Member Functions

 Logger (const Logger &)=delete
 Logger (Logger &&)=delete
 ~Logger () noexcept=default
Loggeroperator= (const Logger &)=delete
Loggeroperator= (Logger &&)=delete
template<LoggerTrait T>
void AddLogger (T logger, Config config=LoggerConfigOf< T >()) noexcept
 Adds a logger with the specified type and configuration.
template<LoggerTrait T>
void RemoveLogger (T logger={}) noexcept
 Removes a logger with the given type.
void FlushAll () noexcept
 Flushes all registered loggers.
template<LoggerTrait T>
void Flush (T={}) noexcept
 Flushes a specific logger.
template<LoggerTrait T>
void Log (T logger, Level level, std::string_view message) noexcept
 Logs a string message with typed logger.
template<LoggerTrait T, typename... Args>
requires (sizeof...(Args) > 0)
void Log (T logger, Level level, std::format_string< Args... > fmt, Args &&... args) noexcept
 Logs a formatted message with typed logger.
void Log (Level level, std::string_view message) noexcept
 Logs a string message with default logger.
template<typename... Args>
requires (sizeof...(Args) > 0)
void Log (Level level, std::format_string< Args... > fmt, Args &&... args) noexcept
 Logs a formatted message with default logger.
void SetDefaultConfig (const Config &config) noexcept
 Sets the global default configuration for new loggers.
template<LoggerTrait T>
void SetLevel (T, Level level) noexcept
 Sets the minimum log level for a typed logger.
void SetLevel (Level level) noexcept
 Sets the minimum log level for the default logger.
template<LoggerTrait T>
bool HasLogger (T logger={}) const noexcept
 Checks if a logger with the given type exists.
bool ShouldLog (Level level) const noexcept
 Checks if the default logger should log messages at the given level.
template<LoggerTrait T>
bool ShouldLog (T, Level level) const noexcept
 Checks if a typed logger should log messages at the given level.
template<LoggerTrait T>
Level GetLevel (T={}) const noexcept
 Gets the current log level for a typed logger.
Level GetLevel () const noexcept
 Gets the current log level for the default logger.
const ConfigGetDefaultConfig () const noexcept
 Gets the current default configuration.

Static Public Member Functions

static LoggerInstance () noexcept
 Gets the singleton instance.

Detailed Description

Centralized logging system with configurable output and formatting.

Note
Thread-safe.

Definition at line 40 of file logger.hpp.

Constructor & Destructor Documentation

◆ Logger() [1/2]

helios::log::Logger::Logger ( const Logger & )
delete

◆ Logger() [2/2]

helios::log::Logger::Logger ( Logger && )
delete

◆ ~Logger()

helios::log::Logger::~Logger ( )
defaultnoexcept

Member Function Documentation

◆ AddLogger()

template<LoggerTrait T>
void helios::log::Logger::AddLogger ( T logger,
Config config = LoggerConfigOf<T>() )
inlinenoexcept

Adds a logger with the specified type and configuration.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
configConfiguration for the logger

Definition at line 282 of file logger.hpp.

◆ Flush()

template<LoggerTrait T>
void helios::log::Logger::Flush ( T = {})
inlinenoexcept

Flushes a specific logger.

Template Parameters
TLogger type
Parameters
loggerLogger type instance

Definition at line 85 of file logger.hpp.

◆ FlushAll()

void helios::log::Logger::FlushAll ( )
noexcept

Flushes all registered loggers.

Definition at line 98 of file logger.cpp.

◆ GetDefaultConfig()

const Config & helios::log::Logger::GetDefaultConfig ( ) const
inlinenodiscardnoexcept

Gets the current default configuration.

Returns
The default logger configuration

Definition at line 206 of file logger.hpp.

◆ GetLevel() [1/2]

Level helios::log::Logger::GetLevel ( ) const
nodiscardnoexcept

Gets the current log level for the default logger.

Returns
The current log level

Definition at line 136 of file logger.cpp.

◆ GetLevel() [2/2]

template<LoggerTrait T>
Level helios::log::Logger::GetLevel ( T = {}) const
inlinenodiscardnoexcept

Gets the current log level for a typed logger.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
Returns
The current log level, or Level::kTrace if logger doesn't exist

Definition at line 192 of file logger.hpp.

◆ HasLogger()

template<LoggerTrait T>
bool helios::log::Logger::HasLogger ( T logger = {}) const
inlinenodiscardnoexcept

Checks if a logger with the given type exists.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
Returns
True if the logger exists, false otherwise

Definition at line 356 of file logger.hpp.

◆ Instance()

Logger & helios::log::Logger::Instance ( )
inlinestaticnodiscardnoexcept

Gets the singleton instance.

Returns
Reference to the Logger instance

Definition at line 53 of file logger.hpp.

◆ Log() [1/4]

template<typename... Args>
requires (sizeof...(Args) > 0)
void helios::log::Logger::Log ( Level level,
std::format_string< Args... > fmt,
Args &&... args )
inlinenoexcept

Logs a formatted message with default logger.

Template Parameters
ArgsTypes of the format arguments
Parameters
levelLog severity level
fmtFormat string
argsArguments for the format string

Definition at line 345 of file logger.hpp.

◆ Log() [2/4]

void helios::log::Logger::Log ( Level level,
std::string_view message )
inlinenoexcept

Logs a string message with default logger.

Parameters
levelLog severity level
messageMessage to log

Definition at line 337 of file logger.hpp.

◆ Log() [3/4]

template<LoggerTrait T, typename... Args>
requires (sizeof...(Args) > 0)
void helios::log::Logger::Log ( T logger,
Level level,
std::format_string< Args... > fmt,
Args &&... args )
inlinenoexcept

Logs a formatted message with typed logger.

Template Parameters
TLogger type
ArgsTypes of the format arguments
Parameters
loggerLogger type instance
levelLog severity level
fmtFormat string
argsArguments for the format string

Definition at line 327 of file logger.hpp.

◆ Log() [4/4]

template<LoggerTrait T>
void helios::log::Logger::Log ( T logger,
Level level,
std::string_view message )
inlinenoexcept

Logs a string message with typed logger.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
levelLog severity level
messageMessage to log

Definition at line 318 of file logger.hpp.

◆ operator=() [1/2]

Logger & helios::log::Logger::operator= ( const Logger & )
delete

◆ operator=() [2/2]

Logger & helios::log::Logger::operator= ( Logger && )
delete

◆ RemoveLogger()

template<LoggerTrait T>
void helios::log::Logger::RemoveLogger ( T logger = {})
inlinenoexcept

Removes a logger with the given type.

Note
Cannot remove the default logger
Template Parameters
TLogger type
Parameters
loggerLogger type instance

Definition at line 299 of file logger.hpp.

◆ SetDefaultConfig()

void helios::log::Logger::SetDefaultConfig ( const Config & config)
inlinenoexcept

Sets the global default configuration for new loggers.

Parameters
configThe configuration to use as default

Definition at line 136 of file logger.hpp.

◆ SetLevel() [1/2]

void helios::log::Logger::SetLevel ( Level level)
noexcept

Sets the minimum log level for the default logger.

Parameters
levelMinimum log level to set

Definition at line 121 of file logger.cpp.

◆ SetLevel() [2/2]

template<LoggerTrait T>
void helios::log::Logger::SetLevel ( T ,
Level level )
inlinenoexcept

Sets the minimum log level for a typed logger.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
levelMinimum log level to set

Definition at line 147 of file logger.hpp.

◆ ShouldLog() [1/2]

bool helios::log::Logger::ShouldLog ( Level level) const
nodiscardnoexcept

Checks if the default logger should log messages at the given level.

Parameters
levelThe log level to check
Returns
True if messages at this level should be logged

Definition at line 128 of file logger.cpp.

◆ ShouldLog() [2/2]

template<LoggerTrait T>
bool helios::log::Logger::ShouldLog ( T ,
Level level ) const
inlinenodiscardnoexcept

Checks if a typed logger should log messages at the given level.

Template Parameters
TLogger type
Parameters
loggerLogger type instance
levelThe log level to check
Returns
True if messages at this level should be logged

Definition at line 181 of file logger.hpp.