![]() |
LogIt++
Header-only, macro-first C++ logging library
|
Stores formatted logs in MDBX tables with optional async batching. More...
#include <MdbxLogger.hpp>
Classes | |
| struct | Config |
| Configuration for the MDBX logger backend. More... | |
| struct | MdbxLogItem |
| struct | Payload |
| struct | PayloadView |
| Public read-only view of a large payload. More... | |
| struct | Record |
| struct | Session |
| struct | SessionView |
| Public read-only view of session metadata. More... | |
Public Member Functions | |
| MdbxLogger () | |
| MdbxLogger (const Config &config) | |
| ~MdbxLogger () override | |
| MdbxLogger (const MdbxLogger &)=delete | |
| MdbxLogger & | operator= (const MdbxLogger &)=delete |
| void | log (const LogRecord &record, const std::string &message) override |
| Queues or writes a formatted log record. | |
| void | wait () override |
| Waits until accepted async records are written. | |
| void | shutdown () override |
| Stops the worker after draining accepted records. | |
| uint64_t | session_id () const |
| Returns this logger session id. | |
| std::vector< LogRecordSnapshot > | read_range (int64_t from_ms, int64_t to_ms, std::size_t limit=0) const override |
Reads records in [from_ms, to_ms) ordered by timestamp and sequence. | |
| LogReadResult< std::vector< LogRecordSnapshot > > | read_range_result (int64_t from_ms, int64_t to_ms, std::size_t limit=0) const override |
| Reads records and preserves storage/decode errors. | |
| std::vector< LogRecordSnapshot > | read_recent (std::size_t limit, int64_t period_ms=0, LogReadOrder order=LogReadOrder::Ascending) const override |
| Reads the most recent records. | |
| LogReadResult< std::vector< LogRecordSnapshot > > | read_recent_result (std::size_t limit, int64_t period_ms=0, LogReadOrder order=LogReadOrder::Ascending) const override |
| Reads the most recent records and preserves storage/decode errors. | |
| std::optional< PayloadView > | read_payload (uint64_t payload_id) const |
| Reads a payload by id. | |
| LogReadResult< PayloadView > | read_payload_result (uint64_t payload_id) const |
| Reads a payload by id and preserves storage/decode errors. | |
| std::optional< std::string > | read_payload_data (uint64_t payload_id) const |
| Reads and decompresses payload data by id. | |
| LogReadResult< std::string > | read_payload_data_result (uint64_t payload_id) const |
| Reads and decompresses payload data while preserving failure details. | |
| std::optional< SessionView > | read_session (uint64_t session_id) const |
| Reads session metadata by id. | |
| LogReadResult< SessionView > | read_session_result (uint64_t session_id) const |
| Reads session metadata by id and preserves storage/decode errors. | |
| 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. | |
| LogClearResult | clear_logs (const LogClearOptions &options=LogClearOptions()) override |
| Clears logger-owned buffered or persisted records when supported. | |
| uint64_t | dropped_count () const |
| uint64_t | failed_export_count () const |
| uint64_t | add_log_callback (Callback callback) override |
| Registers a callback to be invoked after each successfully written record. | |
| bool | remove_log_callback (uint64_t callback_id) override |
| Unregisters a previously added callback. | |
Public Member Functions inherited from logit::ILogger | |
| virtual | ~ILogger ()=default |
| virtual std::vector< std::string > | get_buffered_strings () const |
| Returns buffered formatted messages in chronological order. | |
| virtual std::vector< BufferedLogEntry > | get_buffered_entries () const |
| Returns buffered structured entries in chronological order. | |
| virtual std::vector< LogFileInfo > | list_log_files () const |
| Lists persisted log files owned by this backend. | |
| virtual LogFileReadResult | read_log_file (const std::string &path) const |
| Reads one persisted log file owned by this backend. | |
| virtual std::vector< LogFileReadResult > | read_log_files (const std::vector< std::string > &paths) const |
| Reads several persisted log files owned by this backend. | |
Public Member Functions inherited from logit::ILogReader | |
| virtual | ~ILogReader ()=default |
Public Member Functions inherited from logit::ILogSubscriber | |
| virtual | ~ILogSubscriber ()=default |
Private Types | |
| typedef mdbxc::KeyValueTable< uint64_t, Session > | SessionTable |
| typedef mdbxc::KeyValueTable< std::string, Record > | RecordTable |
| typedef mdbxc::KeyValueTable< uint64_t, Payload > | PayloadTable |
Private Member Functions | |
| void | notify_callbacks (const std::vector< LogRecordSnapshot > &snapshots) const |
| void | normalize_config () |
| void | validate_compression_config () const |
| void | open_storage () |
| void | ensure_storage_parent (const mdbxc::Config &db_config) const |
| void | report_init_error (const std::string &message) const noexcept |
| uint64_t | open_session () |
| bool | find_session_locked (uint64_t session_id, Session &out, MDBX_txn *txn) const |
| void | update_session_end () |
| void | worker_loop () |
| void | write_batch (const std::vector< MdbxLogItem > &batch) |
| Record | write_item_locked (const MdbxLogItem &item, mdbxc::Transaction &txn) |
| bool | should_spill_payload (const std::string &message) const |
| std::string | make_payload_preview (const std::string &message) const |
| void | fill_payload (const std::string &message, Payload &payload) |
| uint64_t | allocate_payload_id_locked (mdbxc::Transaction &txn) |
| std::string | next_record_key_locked (int64_t timestamp_ms, uint32_t &sequence, mdbxc::Transaction &txn) |
| void | advance_sequence_after_collision (int64_t timestamp_ms, uint32_t sequence) |
| void | mark_last_log (int64_t timestamp_ms) |
| int64_t | get_last_log_ts () const |
| int64_t | get_time_since_last_log () const |
Static Private Member Functions | |
| template<typename T > | |
| static LogReadResult< T > | make_not_found_result (const std::string &message) |
| static LogRecordSnapshot | to_log_record_snapshot (const Record &r) |
| static SessionView | to_view (const Session &s) |
| static PayloadView | to_view (const Payload &p) |
| static std::vector< uint8_t > | serialize_session (const Session &s) |
| static Session | deserialize_session (const void *data, size_t size) |
| static std::vector< uint8_t > | serialize_record (const Record &r) |
| static Record | deserialize_record (const void *data, size_t size) |
| static std::vector< uint8_t > | serialize_payload (const Payload &p) |
| static Payload | deserialize_payload (const void *data, size_t size) |
| static uint64_t | make_unique_id () |
| static int64_t | counter_to_int64 (uint64_t value) |
Private Attributes | |
| Config | m_config |
| std::shared_ptr< mdbxc::Connection > | m_connection |
| std::unique_ptr< SessionTable > | m_sessions |
| std::unique_ptr< RecordTable > | m_records |
| std::unique_ptr< PayloadTable > | m_payloads |
| std::mutex | m_db_mutex |
| std::mutex | m_mutex |
| std::condition_variable | m_cv |
| std::condition_variable | m_space_cv |
| std::deque< MdbxLogItem > | m_queue |
| bool | m_stopping = false |
| bool | m_idle = true |
| std::thread | m_worker |
| uint64_t | m_session_id = 0 |
| std::unordered_map< int64_t, uint32_t > | m_next_sequence_by_timestamp |
| std::atomic< int > | m_log_level = ATOMIC_VAR_INIT(static_cast<int>(LogLevel::LOG_LVL_TRACE)) |
| std::atomic< int64_t > | m_last_log_ts = ATOMIC_VAR_INIT(0) |
| std::atomic< int64_t > | m_last_log_mono_ts = ATOMIC_VAR_INIT(0) |
| std::atomic< uint64_t > | m_dropped = ATOMIC_VAR_INIT(0) |
| std::atomic< uint64_t > | m_failed_writes = ATOMIC_VAR_INIT(0) |
| std::atomic< bool > | m_shutdown = ATOMIC_VAR_INIT(false) |
| std::mutex | m_callbacks_mutex |
| std::map< uint64_t, Callback > | m_callbacks |
| std::atomic< uint64_t > | m_next_callback_id {1} |
Additional Inherited Members | |
Public Types inherited from logit::ILogSubscriber | |
| using | Callback = std::function<void(const LogRecordSnapshot&)> |
Stores formatted logs in MDBX tables with optional async batching.
Definition at line 46 of file MdbxLogger.hpp.
|
private |
Definition at line 582 of file MdbxLogger.hpp.
|
private |
Definition at line 581 of file MdbxLogger.hpp.
|
private |
Definition at line 580 of file MdbxLogger.hpp.
|
inline |
Definition at line 85 of file MdbxLogger.hpp.
|
inlineexplicit |
Definition at line 87 of file MdbxLogger.hpp.
|
inlineoverride |
Definition at line 106 of file MdbxLogger.hpp.
|
delete |
|
inlineoverridevirtual |
Registers a callback to be invoked after each successfully written record.
| callback | Function called with the written LogRecordSnapshot. |
Implements logit::ILogSubscriber.
Definition at line 523 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1074 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1038 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Clears logger-owned buffered or persisted records when supported.
| options | Data categories to clear. |
Implements logit::ILogger.
Definition at line 464 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 1107 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 755 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 724 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 691 of file MdbxLogger.hpp.
|
inline |
Definition at line 515 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 813 of file MdbxLogger.hpp.
|
inline |
Definition at line 519 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1014 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 875 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Retrieves a floating-point parameter from the logger.
Derived classes should implement this to return specific floating-point-based parameters.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 440 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Retrieves an integer parameter from the logger.
Derived classes should implement this to return specific integer-based parameters.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 428 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1094 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Gets the minimal log level for this logger.
Implements logit::ILogger.
Definition at line 460 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Retrieves a string parameter from the logger.
Derived classes should implement this to return specific string-based parameters.
| param | The parameter type to retrieve. |
Implements logit::ILogger.
Definition at line 416 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1098 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Queues or writes a formatted log record.
Implements logit::ILogger.
Definition at line 114 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 615 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1009 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 1081 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1089 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1048 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 777 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 622 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 828 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 799 of file MdbxLogger.hpp.
|
delete |
|
inline |
Reads a payload by id.
Definition at line 300 of file MdbxLogger.hpp.
|
inline |
Reads and decompresses payload data by id.
Definition at line 342 of file MdbxLogger.hpp.
|
inline |
Reads and decompresses payload data while preserving failure details.
Definition at line 347 of file MdbxLogger.hpp.
|
inline |
Reads a payload by id and preserves storage/decode errors.
Definition at line 305 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Reads records in [from_ms, to_ms) ordered by timestamp and sequence.
Implements logit::ILogReader.
Definition at line 212 of file MdbxLogger.hpp.
|
inlineoverride |
Reads records and preserves storage/decode errors.
Definition at line 221 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Reads the most recent records.
| limit | Maximum number of records (0 = unlimited). |
| period_ms | Time window in milliseconds from now backward (0 = unlimited). |
| order | Ascending or descending result order. |
Implements logit::ILogReader.
Definition at line 269 of file MdbxLogger.hpp.
|
inlineoverride |
Reads the most recent records and preserves storage/decode errors.
Definition at line 278 of file MdbxLogger.hpp.
|
inline |
Reads session metadata by id.
Definition at line 376 of file MdbxLogger.hpp.
|
inline |
Reads session metadata by id and preserves storage/decode errors.
Definition at line 381 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Unregisters a previously added callback.
Removal prevents future dispatch snapshots from including the callback, but cannot cancel an invocation that has already been copied for dispatch.
| callback_id | Id returned by add_log_callback. |
Implements logit::ILogSubscriber.
Definition at line 530 of file MdbxLogger.hpp.
|
inlineprivatenoexcept |
Definition at line 819 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 746 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 709 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 680 of file MdbxLogger.hpp.
|
inline |
Returns this logger session id.
Definition at line 207 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Sets the minimal log level for this logger.
| level | Minimum log level. |
Implements logit::ILogger.
Definition at line 456 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 1004 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Stops the worker after draining accepted records.
Implements logit::ILogger.
Definition at line 182 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 648 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 672 of file MdbxLogger.hpp.
|
inlinestaticprivate |
Definition at line 662 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 889 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 786 of file MdbxLogger.hpp.
|
inlineoverridevirtual |
Waits until accepted async records are written.
Implements logit::ILogger.
Definition at line 170 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 904 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 944 of file MdbxLogger.hpp.
|
inlineprivate |
Definition at line 975 of file MdbxLogger.hpp.
|
private |
Definition at line 611 of file MdbxLogger.hpp.
|
mutableprivate |
Definition at line 610 of file MdbxLogger.hpp.
|
private |
Definition at line 584 of file MdbxLogger.hpp.
|
private |
Definition at line 585 of file MdbxLogger.hpp.
|
private |
Definition at line 593 of file MdbxLogger.hpp.
|
mutableprivate |
Definition at line 590 of file MdbxLogger.hpp.
|
private |
Definition at line 606 of file MdbxLogger.hpp.
|
private |
Definition at line 607 of file MdbxLogger.hpp.
|
private |
Definition at line 597 of file MdbxLogger.hpp.
|
private |
Definition at line 605 of file MdbxLogger.hpp.
|
private |
Definition at line 604 of file MdbxLogger.hpp.
|
private |
Definition at line 603 of file MdbxLogger.hpp.
|
private |
Definition at line 592 of file MdbxLogger.hpp.
|
private |
Definition at line 612 of file MdbxLogger.hpp.
|
private |
Definition at line 601 of file MdbxLogger.hpp.
|
private |
Definition at line 588 of file MdbxLogger.hpp.
|
private |
Definition at line 595 of file MdbxLogger.hpp.
|
private |
Definition at line 587 of file MdbxLogger.hpp.
|
private |
Definition at line 600 of file MdbxLogger.hpp.
|
private |
Definition at line 586 of file MdbxLogger.hpp.
|
private |
Definition at line 608 of file MdbxLogger.hpp.
|
private |
Definition at line 594 of file MdbxLogger.hpp.
|
private |
Definition at line 596 of file MdbxLogger.hpp.
|
private |
Definition at line 598 of file MdbxLogger.hpp.