![]() |
LogIt++
|
Logs messages to files with date-based rotation and automatic deletion of old logs. More...
#include <FileLogger.hpp>
Classes | |
| struct | Config |
| Configuration for the file logger. More... | |
Public Member Functions | |
| FileLogger () | |
| Default constructor that uses default configuration. | |
| FileLogger (const Config &config) | |
| Constructor with custom configuration. | |
| FileLogger (const std::string &directory, const bool &async=true, const int &auto_delete_days=30) | |
| Constructor with directory and asynchronous flag. | |
| FileLogger (const std::string &directory, const bool &async, const int &auto_delete_days, uint64_t max_file_size_bytes, uint32_t max_rotated_files, bool compress_rotated=false, std::string compress_cmd={}) | |
| Constructor with directory, size-based rotation and additional options. | |
| virtual | ~FileLogger () |
| Destructor to stop logging and close file. | |
| void | log (const LogRecord &record, const std::string &message) override |
| Logs a message to a file with thread safety. | |
| std::string | get_string_param (const LoggerParam ¶m) const override |
| Retrieves a string parameter from the logger. | |
| int64_t | get_int_param (const LoggerParam ¶m) const override |
| Retrieves an integer parameter from the logger. | |
| double | get_float_param (const LoggerParam ¶m) const override |
| Retrieves a floating-point parameter from the logger. | |
| void | set_log_level (LogLevel level) override |
| Sets the minimal log level for this logger. | |
| LogLevel | get_log_level () const override |
| Gets the minimal log level for this logger. | |
| void | wait () override |
| Waits for all asynchronous tasks to complete. | |
Public Member Functions inherited from logit::ILogger | |
| virtual | ~ILogger ()=default |
Private Member Functions | |
| void | start_logging () |
| Starts the logging process by initializing the file and directory. | |
| void | stop_logging () |
| Stops the logging process by closing the file and waiting for tasks. | |
| void | initialize_directory () |
| Initializes the logging directory. | |
| std::string | get_directory_path () const |
| Gets the full path to the logging directory. | |
| void | open_log_file (const int64_t &date_ts) |
| Opens a new log file based on the provided date timestamp. | |
| std::string | create_file_path (int64_t date_ts) const |
| Creates a file path for the log file based on the date timestamp. | |
| void | write_log (const std::string &message, const int64_t ×tamp_ms) |
| Writes a log message to the file. | |
| void | rotate_current_file () |
| void | enforce_rotation_retention (const std::string &base, uint32_t max_files, const std::string &dir) |
| void | remove_old_logs () |
| Removes old log files based on the auto-delete days configuration. | |
| bool | is_valid_log_filename (const std::string &filename) const |
| Checks if the filename matches the log file naming pattern. | |
| int64_t | get_date_ts_from_filename (const std::string &filename) const |
| Extracts the date timestamp from the log filename. | |
| int64_t | get_current_utc_date_ts () const |
| Gets the current UTC date timestamp in seconds. | |
| int64_t | current_timestamp_ms () const |
| Gets the current timestamp in milliseconds. | |
| std::string | get_last_log_file_path () const |
| Retrieves the last log file path. | |
| std::string | get_last_log_file_name () const |
| Retrieves the last log file name. | |
| int64_t | get_last_log_ts () const |
| Retrieves the timestamp of the last log. | |
| int64_t | get_time_since_last_log () const |
| Retrieves the time since the last log. | |
Private Attributes | |
| std::mutex | m_mutex |
| Mutex to protect file operations. | |
| Config | m_config |
| Configuration for the file logger. | |
| std::ofstream | m_file |
| Output file stream for logging. | |
| std::mutex | m_file_path_mutex |
| Mutex to protect file path operations. | |
| std::string | m_file_path |
| Path of the currently open log file. | |
| std::string | m_file_name |
| Name of the currently open log file. | |
| int64_t | m_current_date_ts = 0 |
| Timestamp of the current log file's date. | |
| uint64_t | m_current_file_size = 0 |
| Current size of the log file. | |
| std::atomic< int64_t > | m_last_log_ts = ATOMIC_VAR_INIT(0) |
| Timestamp of the last log. | |
| std::atomic< int > | m_log_level = ATOMIC_VAR_INIT(static_cast<int>(LogLevel::LOG_LVL_TRACE)) |
Logs messages to files with date-based rotation and automatic deletion of old logs.
This logger writes logs to files organized by date. It supports asynchronous logging and manages old files based on a configurable retention period.
Key Features:
Definition at line 71 of file FileLogger.hpp.
|
inline |
Default constructor that uses default configuration.
Definition at line 87 of file FileLogger.hpp.
|
inline |
Constructor with custom configuration.
| config | The configuration for the logger. |
Definition at line 93 of file FileLogger.hpp.
|
inline |
Constructor with directory and asynchronous flag.
| directory | The directory where log files will be stored. |
| async | Boolean flag for asynchronous logging. |
| auto_delete_days | Number of days after which old log files are deleted. |
Definition at line 101 of file FileLogger.hpp.
|
inline |
Constructor with directory, size-based rotation and additional options.
Definition at line 112 of file FileLogger.hpp.
|
inlinevirtual |
Destructor to stop logging and close file.
Definition at line 131 of file FileLogger.hpp.
|
inlineprivate |
Creates a file path for the log file based on the date timestamp.
| date_ts | The timestamp representing the date for the log file. |
Definition at line 299 of file FileLogger.hpp.
|
inlineprivate |
Gets the current timestamp in milliseconds.
Definition at line 483 of file FileLogger.hpp.
|
inlineprivate |
Definition at line 373 of file FileLogger.hpp.
|
inlineprivate |
Gets the current UTC date timestamp in seconds.
Definition at line 477 of file FileLogger.hpp.
|
inlineprivate |
Extracts the date timestamp from the log filename.
| filename | The filename to extract the date from. |
Definition at line 471 of file FileLogger.hpp.
|
inlineprivate |
Gets the full path to the logging directory.
Definition at line 265 of file FileLogger.hpp.
|
inlineoverridevirtual |
Retrieves a floating-point parameter from the logger.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 195 of file FileLogger.hpp.
|
inlineoverridevirtual |
Retrieves an integer parameter from the logger.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 182 of file FileLogger.hpp.
|
inlineprivate |
Retrieves the last log file name.
Definition at line 496 of file FileLogger.hpp.
|
inlineprivate |
Retrieves the last log file path.
Definition at line 489 of file FileLogger.hpp.
|
inlineprivate |
Retrieves the timestamp of the last log.
Definition at line 503 of file FileLogger.hpp.
|
inlineoverridevirtual |
Gets the minimal log level for this logger.
Implements logit::ILogger.
Definition at line 211 of file FileLogger.hpp.
|
inlineoverridevirtual |
Retrieves a string parameter from the logger.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 167 of file FileLogger.hpp.
|
inlineprivate |
Retrieves the time since the last log.
Definition at line 509 of file FileLogger.hpp.
|
inlineprivate |
Initializes the logging directory.
Definition at line 259 of file FileLogger.hpp.
|
inlineprivate |
Checks if the filename matches the log file naming pattern.
| filename | The filename to check. |
Definition at line 464 of file FileLogger.hpp.
|
inlineoverridevirtual |
Logs a message to a file with thread safety.
If asynchronous logging is enabled, the message is added to the task queue; otherwise, it is logged directly.
| record | The log record containing log information. |
| message | The formatted log message. |
Implements logit::ILogger.
Definition at line 142 of file FileLogger.hpp.
|
inlineprivate |
Opens a new log file based on the provided date timestamp.
| date_ts | The timestamp representing the date for the log file. |
Definition at line 275 of file FileLogger.hpp.
|
inlineprivate |
Removes old log files based on the auto-delete days configuration.
Definition at line 418 of file FileLogger.hpp.
|
inlineprivate |
Definition at line 325 of file FileLogger.hpp.
|
inlineoverridevirtual |
Sets the minimal log level for this logger.
Implements logit::ILogger.
Definition at line 206 of file FileLogger.hpp.
|
inlineprivate |
Starts the logging process by initializing the file and directory.
Definition at line 234 of file FileLogger.hpp.
|
inlineprivate |
Stops the logging process by closing the file and waiting for tasks.
Definition at line 250 of file FileLogger.hpp.
|
inlineoverridevirtual |
Waits for all asynchronous tasks to complete.
Implements logit::ILogger.
Definition at line 216 of file FileLogger.hpp.
|
inlineprivate |
Writes a log message to the file.
| message | The log message to write. |
| timestamp_ms | The timestamp of the log message in milliseconds. |
Definition at line 307 of file FileLogger.hpp.
|
private |
Configuration for the file logger.
Definition at line 223 of file FileLogger.hpp.
|
private |
Timestamp of the current log file's date.
Definition at line 228 of file FileLogger.hpp.
|
private |
Current size of the log file.
Definition at line 229 of file FileLogger.hpp.
|
private |
Output file stream for logging.
Definition at line 224 of file FileLogger.hpp.
|
private |
Name of the currently open log file.
Definition at line 227 of file FileLogger.hpp.
|
private |
Path of the currently open log file.
Definition at line 226 of file FileLogger.hpp.
|
mutableprivate |
Mutex to protect file path operations.
Definition at line 225 of file FileLogger.hpp.
|
private |
Timestamp of the last log.
Definition at line 230 of file FileLogger.hpp.
|
private |
Definition at line 231 of file FileLogger.hpp.
|
mutableprivate |
Mutex to protect file operations.
Definition at line 222 of file FileLogger.hpp.