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.
 
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

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 22 of file Logger.hpp.

Constructor & Destructor Documentation

◆ Logger() [1/3]

logit::Logger::Logger ( )
inlineprivate

Definition at line 252 of file Logger.hpp.

◆ ~Logger()

logit::Logger::~Logger ( )
inlineprivate

Definition at line 256 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 38 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 160 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 27 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 147 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 134 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 66 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 99 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 113 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 196 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 188 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 175 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 268 of file Logger.hpp.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ print()

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 241 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 55 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 77 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 88 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 214 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 204 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 232 of file Logger.hpp.

◆ m_mutex

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

Mutex for thread safety during logging operations.

Definition at line 233 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 234 of file Logger.hpp.


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