![]() |
LogIt++
Header-only, macro-first C++ logging library
|
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 ¶m) const |
| Retrieves a string parameter from a logger. | |
| int64_t | get_int_param (int logger_index, const LoggerParam ¶m) const |
| Retrieves an integer parameter from a logger. | |
| double | get_float_param (int logger_index, const LoggerParam ¶m) const |
| Retrieves a floating-point parameter from a logger. | |
| std::vector< std::string > | get_buffered_strings (int logger_index) const |
| Retrieves buffered formatted messages from a logger. | |
| std::vector< BufferedLogEntry > | get_buffered_entries (int logger_index) const |
| Retrieves buffered structured entries from a logger. | |
| std::vector< LogFileInfo > | list_log_files (int logger_index) const |
| Lists persisted log files exposed by a logger backend. | |
| LogFileReadResult | read_log_file (int logger_index, const std::string &path) const |
| Reads one persisted log file exposed by a logger backend. | |
| std::vector< LogFileReadResult > | read_log_files (int logger_index, const std::vector< std::string > &paths) const |
| Reads several persisted log files exposed by a logger backend. | |
| LogLevel | get_log_level (int logger_index) const |
| Retrieves the current minimal log level for 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. | |
| LogClearResult | clear_logger (int logger_index, const LogClearOptions &options=LogClearOptions()) |
| Clears logger-owned records for a specific logger. | |
| LogClearResult | clear_all_loggers (const LogClearOptions &options=LogClearOptions()) |
| Clears logger-owned records for all registered loggers. | |
| std::size_t | logger_count () const |
| Returns the number of registered logger strategies. | |
| template<typename LoggerT > | |
| LoggerT * | get_logger_as (int logger_index) |
| Retrieves a typed backend pointer from a logger by index. | |
| template<typename LoggerT > | |
| const LoggerT * | get_logger_as (int logger_index) const |
| Retrieves a typed backend pointer from a logger by index. | |
| void | shutdown () |
| Shuts down logger system. | |
Static Public Member Functions | |
| static Logger & | get_instance () |
| Retrieves singleton instance of Logger. | |
Private Types | |
| using | StrategyList = std::vector<std::shared_ptr<LoggerStrategy>> |
Private Member Functions | |
| void | dispatch_to_strategy (LoggerStrategy &strategy, const LogRecord &record) |
| std::shared_ptr< LoggerStrategy > | get_strategy_snapshot (int logger_index) const |
| void | publish_strategy_snapshot_locked () |
| std::vector< std::shared_ptr< LoggerStrategy > > | get_all_strategy_snapshots () const |
| 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 | |
| Logger & | operator= (const Logger &)=delete |
| Logger (Logger &&)=delete | |
| Logger & | operator= (Logger &&)=delete |
Static Private Member Functions | |
| static void | on_exit_handler () |
| Atexit shutdown handler for Logger and TaskExecutor. | |
Private Attributes | |
| std::vector< std::shared_ptr< LoggerStrategy > > | m_loggers |
| Container for logger-formatter pairs. | |
| std::shared_ptr< const StrategyList > | m_loggers_snapshot |
| Immutable read-mostly strategy list. | |
| LoggerMutex | m_loggers_mx |
| Protects access to logger strategies. | |
| std::atomic< bool > | m_shutdown = ATOMIC_VAR_INIT(false) |
| Flag indicating if shutdown was requested. | |
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 44 of file Logger.hpp.
|
private |
Definition at line 47 of file Logger.hpp.
|
inlineprivate |
Definition at line 628 of file Logger.hpp.
|
inlineprivate |
Definition at line 636 of file Logger.hpp.
|
privatedelete |
|
privatedelete |
|
inline |
Adds a logger and its corresponding formatter.
| logger | Unique pointer to a logger instance. |
| formatter | Unique pointer to a formatter instance. |
| single_mode | If 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 64 of file Logger.hpp.
|
inline |
Clears logger-owned records for all registered loggers.
| options | Data categories to clear. |
Definition at line 457 of file Logger.hpp.
|
inline |
Clears logger-owned records for a specific logger.
| logger_index | Index of logger. |
| options | Data categories to clear. |
Definition at line 427 of file Logger.hpp.
|
inlineprivate |
Definition at line 558 of file Logger.hpp.
|
inlineprivate |
Definition at line 589 of file Logger.hpp.
|
inline |
Retrieves buffered structured entries from a logger.
| logger_index | Index of logger. |
Definition at line 285 of file Logger.hpp.
|
inline |
Retrieves buffered formatted messages from a logger.
| logger_index | Index of logger. |
Definition at line 271 of file Logger.hpp.
|
inline |
Retrieves a floating-point parameter from a logger.
| logger_index | Index of logger. |
| param | Logger parameter to retrieve. |
Definition at line 258 of file Logger.hpp.
|
inlinestatic |
Retrieves singleton instance of Logger.
Definition at line 53 of file Logger.hpp.
|
inline |
Retrieves an integer parameter from a logger.
| logger_index | Index of logger. |
| param | Logger parameter to retrieve. |
Definition at line 244 of file Logger.hpp.
|
inline |
Retrieves the current minimal log level for a logger.
| logger_index | Index of logger. |
Definition at line 369 of file Logger.hpp.
|
inline |
Retrieves a typed backend pointer from a logger by index.
Definition at line 514 of file Logger.hpp.
|
inline |
Retrieves a typed backend pointer from a logger by index.
Definition at line 523 of file Logger.hpp.
|
inlineprivate |
Definition at line 571 of file Logger.hpp.
|
inline |
Retrieves a string parameter from a logger.
| logger_index | Index of logger. |
| param | Logger parameter to retrieve. |
Definition at line 230 of file Logger.hpp.
|
inline |
Checks if a logger is enabled.
| logger_index | Index of logger. |
Definition at line 95 of file Logger.hpp.
|
inline |
Checks whether a logger is in single mode.
| logger_index | Index of logger. |
Definition at line 153 of file Logger.hpp.
|
inline |
Lists persisted log files exposed by a logger backend.
| logger_index | Index of logger. |
Definition at line 299 of file Logger.hpp.
|
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.
| record | Log record to be logged. |
Definition at line 167 of file Logger.hpp.
|
inline |
Logs message without arguments and returns empty tuple.
| record | Log record. |
Definition at line 407 of file Logger.hpp.
|
inline |
Logs message and returns argument.
Logs provided argument and returns it.
| T | Type of argument. |
| record | Log record. |
| args | Argument to be logged. |
Definition at line 399 of file Logger.hpp.
|
inline |
Logs message and returns tuple of arguments.
| Ts | Types of arguments. |
| record | Log record. |
| args | Arguments to be logged. |
Definition at line 386 of file Logger.hpp.
|
inline |
Returns the number of registered logger strategies.
Definition at line 507 of file Logger.hpp.
|
inlinestaticprivate |
Atexit shutdown handler for Logger and TaskExecutor.
Called automatically at program exit.
Definition at line 648 of file Logger.hpp.
|
inlineprivate |
Definition at line 599 of file Logger.hpp.
|
inlineprivate |
Logs a record with given arguments.
| Ts | Types of arguments. |
| record | Log record. |
| args | Arguments to be logged. |
Definition at line 613 of file Logger.hpp.
|
inlineprivate |
Definition at line 582 of file Logger.hpp.
|
inline |
Reads one persisted log file exposed by a logger backend.
| logger_index | Index of logger. |
| path | Full path returned by list_log_files(). |
ok=false when unavailable or unsupported. Definition at line 314 of file Logger.hpp.
|
inline |
Reads several persisted log files exposed by a logger backend.
| logger_index | Index of logger. |
| paths | Full paths returned by list_log_files(). |
Definition at line 337 of file Logger.hpp.
|
inline |
Sets minimal log level for a specific logger.
| logger_index | Index of logger. |
| level | Minimum log level. |
Definition at line 141 of file Logger.hpp.
|
inline |
Sets minimal log level for all loggers.
| level | Minimum log level. |
Definition at line 128 of file Logger.hpp.
|
inline |
Enables or disables a logger by index.
| logger_index | Index of logger. |
| enabled | True to enable, false to disable. |
Definition at line 84 of file Logger.hpp.
|
inline |
Sets single-mode flag for a logger.
| logger_index | Index of logger to modify. |
| single_mode | True to enable single mode, false to disable. |
Definition at line 106 of file Logger.hpp.
|
inline |
Sets timestamp offset for a specific logger.
| logger_index | Index of logger to modify. |
| offset_ms | Offset in milliseconds. |
Definition at line 117 of file Logger.hpp.
|
inline |
Shuts down logger system.
Disables further logging, waits for asynchronous tasks to complete, and shuts down TaskExecutor.
Definition at line 534 of file Logger.hpp.
|
inline |
Waits for all asynchronous loggers to finish processing.
Ensures that all log messages are fully processed before continuing.
Definition at line 415 of file Logger.hpp.
|
private |
Container for logger-formatter pairs.
Definition at line 594 of file Logger.hpp.
|
mutableprivate |
Protects access to logger strategies.
Definition at line 596 of file Logger.hpp.
|
private |
Immutable read-mostly strategy list.
Definition at line 595 of file Logger.hpp.
|
private |
Flag indicating if shutdown was requested.
Definition at line 597 of file Logger.hpp.