LogIt++
Loading...
Searching...
No Matches
logit::Logger Class Reference

Singleton class managing multiple loggers and formatters. More...

#include <Logger.hpp>

Classes

struct  LoggerStrategy
 Structure to hold a logger-formatter pair. More...
 

Public Member Functions

void add_logger (std::unique_ptr< ILogger > logger, std::unique_ptr< ILogFormatter > formatter, bool single_mode=false)
 Adds a logger and its corresponding formatter.
 
void set_logger_enabled (int logger_index, bool enabled)
 Enables or disables a logger by index.
 
bool is_logger_enabled (int logger_index) const
 Checks if a logger is enabled.
 
void set_logger_single_mode (int logger_index, bool single_mode)
 Sets single-mode flag for a logger.
 
void set_timestamp_offset (int logger_index, int64_t offset_ms)
 Sets timestamp offset for a specific logger.
 
void set_log_level (LogLevel level)
 Sets minimal log level for all loggers.
 
void set_log_level (int logger_index, LogLevel level)
 Sets minimal log level for a specific logger.
 
bool is_logger_single_mode (int logger_index) const
 Checks whether a logger is in single mode.
 
void log (const LogRecord &record)
 Logs a LogRecord using added loggers and formatters.
 
std::string get_string_param (int logger_index, const LoggerParam &param) const
 Retrieves a string parameter from a logger.
 
int64_t get_int_param (int logger_index, const LoggerParam &param) const
 Retrieves an integer parameter from a logger.
 
double get_float_param (int logger_index, const LoggerParam &param) const
 Retrieves a floating-point parameter from a logger.
 
template<typename... Ts>
auto log_and_return (const LogRecord &record, Ts &&... args) -> decltype(std::forward_as_tuple(std::forward< Ts >(args)...))
 Logs message and returns tuple of arguments.
 
template<typename T>
auto log_and_return (const LogRecord &record, T &&args) -> decltype(args)
 Logs message and returns argument.
 
auto log_and_return (const LogRecord &record) -> std::tuple<>
 Logs message without arguments and returns empty tuple.
 
void wait ()
 Waits for all asynchronous loggers to finish processing.
 
void shutdown ()
 Shuts down logger system.
 

Static Public Member Functions

static Loggerget_instance ()
 Retrieves singleton instance of Logger.
 

Private Member Functions

void print (const LogRecord &record)
 
template<typename... Ts>
void print (const LogRecord &record, Ts const &... args)
 Logs a record with given arguments.
 
 Logger ()
 
 ~Logger ()
 
 Logger (const Logger &)=delete
 
Loggeroperator= (const Logger &)=delete
 
 Logger (Logger &&)=delete
 
Loggeroperator= (Logger &&)=delete
 

Static Private Member Functions

static void on_exit_handler ()
 Atexit shutdown handler for Logger and TaskExecutor.
 

Private Attributes

std::vector< LoggerStrategym_loggers
 Container for logger-formatter pairs.
 
std::mutex m_mutex
 Mutex for thread safety during logging operations.
 
std::atomic< bool > m_shutdown = ATOMIC_VAR_INIT(false)
 Flag indicating if shutdown was requested.
 

Detailed Description

Singleton class managing multiple loggers and formatters.

Allows adding multiple logger and formatter pairs. Provides methods to log messages using these strategies and supports both synchronous and asynchronous logging. Class is thread-safe.

Definition at line 24 of file Logger.hpp.

Constructor & Destructor Documentation

◆ Logger() [1/3]

logit::Logger::Logger ( )
inlineprivate

Definition at line 290 of file Logger.hpp.

◆ ~Logger()

logit::Logger::~Logger ( )
inlineprivate

Definition at line 294 of file Logger.hpp.

◆ Logger() [2/3]

logit::Logger::Logger ( const Logger & )
privatedelete

◆ Logger() [3/3]

logit::Logger::Logger ( Logger && )
privatedelete

Member Function Documentation

◆ add_logger()

void logit::Logger::add_logger ( std::unique_ptr< ILogger > logger,
std::unique_ptr< ILogFormatter > formatter,
bool single_mode = false )
inline

Adds a logger and its corresponding formatter.

Parameters
loggerUnique pointer to a logger instance.
formatterUnique pointer to a formatter instance.
single_modeIf true, this logger will only be invoked by specific log macros (e.g., LOGIT_TRACE_TO) that explicitly target it using the logger's index. It will not process logs from general log macros (e.g., LOGIT_TRACE).

Definition at line 40 of file Logger.hpp.

◆ get_float_param()

double logit::Logger::get_float_param ( int logger_index,
const LoggerParam & param ) const
inline

Retrieves a floating-point parameter from a logger.

Parameters
logger_indexIndex of logger.
paramLogger parameter to retrieve.
Returns
Requested parameter as a double, or 0.0 if unsupported.

Definition at line 185 of file Logger.hpp.

◆ get_instance()

static Logger & logit::Logger::get_instance ( )
inlinestatic

Retrieves singleton instance of Logger.

Returns
Reference to singleton Logger instance.

Definition at line 29 of file Logger.hpp.

◆ get_int_param()

int64_t logit::Logger::get_int_param ( int logger_index,
const LoggerParam & param ) const
inline

Retrieves an integer parameter from a logger.

Parameters
logger_indexIndex of logger.
paramLogger parameter to retrieve.
Returns
Requested parameter as an integer, or 0 if unsupported.

Definition at line 172 of file Logger.hpp.

◆ get_string_param()

std::string logit::Logger::get_string_param ( int logger_index,
const LoggerParam & param ) const
inline

Retrieves a string parameter from a logger.

Parameters
logger_indexIndex of logger.
paramLogger parameter to retrieve.
Returns
Requested parameter as a string, or empty string if unsupported.

Definition at line 159 of file Logger.hpp.

◆ is_logger_enabled()

bool logit::Logger::is_logger_enabled ( int logger_index) const
inline

Checks if a logger is enabled.

Parameters
logger_indexIndex of logger.
Returns
True if logger is enabled, false otherwise.

Definition at line 68 of file Logger.hpp.

◆ is_logger_single_mode()

bool logit::Logger::is_logger_single_mode ( int logger_index) const
inline

Checks whether a logger is in single mode.

Parameters
logger_indexIndex of logger.
Returns
True if logger is in single mode, false otherwise.

Definition at line 122 of file Logger.hpp.

◆ log()

void logit::Logger::log ( const LogRecord & record)
inline

Logs a LogRecord using added loggers and formatters.

Formats the log message using each logger's corresponding formatter and sends the formatted message to the logger.

Parameters
recordLog record to be logged.

Definition at line 136 of file Logger.hpp.

◆ log_and_return() [1/3]

auto logit::Logger::log_and_return ( const LogRecord & record) -> std::tuple<>
inline

Logs message without arguments and returns empty tuple.

Parameters
recordLog record.
Returns
Empty tuple.

Definition at line 221 of file Logger.hpp.

◆ log_and_return() [2/3]

template<typename T>
auto logit::Logger::log_and_return ( const LogRecord & record,
T && args ) -> decltype(args)
inline

Logs message and returns argument.

Logs provided argument and returns it.

Template Parameters
TType of argument.
Parameters
recordLog record.
argsArgument to be logged.
Returns
Logged argument.

Definition at line 213 of file Logger.hpp.

◆ log_and_return() [3/3]

template<typename... Ts>
auto logit::Logger::log_and_return ( const LogRecord & record,
Ts &&... args ) -> decltype(std::forward_as_tuple(std::forward<Ts>(args)...))
inline

Logs message and returns tuple of arguments.

Template Parameters
TsTypes of arguments.
Parameters
recordLog record.
argsArguments to be logged.
Returns
Tuple containing logged arguments.

Definition at line 200 of file Logger.hpp.

◆ on_exit_handler()

static void logit::Logger::on_exit_handler ( )
inlinestaticprivate

Atexit shutdown handler for Logger and TaskExecutor.

Called automatically at program exit.

Definition at line 306 of file Logger.hpp.

◆ operator=() [1/2]

Logger & logit::Logger::operator= ( const Logger & )
privatedelete

◆ operator=() [2/2]

Logger & logit::Logger::operator= ( Logger && )
privatedelete

◆ print() [1/2]

void logit::Logger::print ( const LogRecord & record)
inlineprivate

Definition at line 261 of file Logger.hpp.

◆ print() [2/2]

template<typename... Ts>
void logit::Logger::print ( const LogRecord & record,
Ts const &... args )
inlineprivate

Logs a record with given arguments.

Template Parameters
TsTypes of arguments.
Parameters
recordLog record.
argsArguments to be logged.

Definition at line 275 of file Logger.hpp.

◆ set_log_level() [1/2]

void logit::Logger::set_log_level ( int logger_index,
LogLevel level )
inline

Sets minimal log level for a specific logger.

Parameters
logger_indexIndex of logger.
levelMinimum log level.

Definition at line 111 of file Logger.hpp.

◆ set_log_level() [2/2]

void logit::Logger::set_log_level ( LogLevel level)
inline

Sets minimal log level for all loggers.

Parameters
levelMinimum log level.

Definition at line 100 of file Logger.hpp.

◆ set_logger_enabled()

void logit::Logger::set_logger_enabled ( int logger_index,
bool enabled )
inline

Enables or disables a logger by index.

Parameters
logger_indexIndex of logger.
enabledTrue to enable, false to disable.

Definition at line 57 of file Logger.hpp.

◆ set_logger_single_mode()

void logit::Logger::set_logger_single_mode ( int logger_index,
bool single_mode )
inline

Sets single-mode flag for a logger.

Parameters
logger_indexIndex of logger to modify.
single_modeTrue to enable single mode, false to disable.

Definition at line 79 of file Logger.hpp.

◆ set_timestamp_offset()

void logit::Logger::set_timestamp_offset ( int logger_index,
int64_t offset_ms )
inline

Sets timestamp offset for a specific logger.

Parameters
logger_indexIndex of logger to modify.
offset_msOffset in milliseconds.

Definition at line 90 of file Logger.hpp.

◆ shutdown()

void logit::Logger::shutdown ( )
inline

Shuts down logger system.

Disables further logging, waits for asynchronous tasks to complete, and shuts down TaskExecutor.

Definition at line 239 of file Logger.hpp.

◆ wait()

void logit::Logger::wait ( )
inline

Waits for all asynchronous loggers to finish processing.

Ensures that all log messages are fully processed before continuing.

Definition at line 229 of file Logger.hpp.

Member Data Documentation

◆ m_loggers

std::vector<LoggerStrategy> logit::Logger::m_loggers
private

Container for logger-formatter pairs.

Definition at line 257 of file Logger.hpp.

◆ m_mutex

std::mutex logit::Logger::m_mutex
mutableprivate

Mutex for thread safety during logging operations.

Definition at line 258 of file Logger.hpp.

◆ m_shutdown

std::atomic<bool> logit::Logger::m_shutdown = ATOMIC_VAR_INIT(false)
private

Flag indicating if shutdown was requested.

Definition at line 259 of file Logger.hpp.


The documentation for this class was generated from the following file: