13 std::cout <<
"Starting in-memory snapshot logger example..." << std::endl;
19 LOGIT_INFO(
"This goes to the regular backends");
20 LOGIT_INFO_TO(memory_index,
"Remote control can fetch this later");
21 LOGIT_WARN_TO(memory_index,
"Latest warning for the control plane");
31 std::cout <<
"Buffered strings:" << std::endl;
32 for (
const auto& line : recent_lines) {
33 std::cout <<
" " << line << std::endl;
36 std::cout <<
"Buffered structured entries:" << std::endl;
37 for (
const auto& entry : recent_entries) {
39 << entry.timestamp_ms <<
" " << entry.message << std::endl;
43 std::cout <<
"Recent records via ILogReader:" << std::endl;
44 for (
const auto& record : recent_records) {
46 << record.timestamp_ms <<
" " << record.message << std::endl;
52 now_ms - 60LL * 60 * 1000,
55 std::cout <<
"Range records for the last hour: "
56 << range_records.size() << std::endl;
58 std::vector<logit::LogRecordSnapshot> live_updates;
59 std::mutex live_mutex;
63 std::lock_guard<std::mutex> lock(live_mutex);
64 live_updates.push_back(view);
71 std::size_t live_count = 0;
73 std::lock_guard<std::mutex> lock(live_mutex);
74 live_count = live_updates.size();
75 std::cout <<
"Live updates received:" << std::endl;
76 for (
const auto& record : live_updates) {
78 << record.message << std::endl;
83 std::cout <<
"Callback removed" << std::endl;
90 std::lock_guard<std::mutex> lock(live_mutex);
91 std::cout <<
"Live updates after unsubscribe: "
92 << live_updates.size() <<
" (was " << live_count <<
")"
static Logger & get_instance()
Retrieves singleton instance of Logger.
std::size_t logger_count() const
Returns the number of registered logger strategies.
#define LOGIT_CURRENT_TIMESTAMP_MS()
Macro to get the current timestamp in milliseconds.
#define LOGIT_RAW_TO(index, message)
Logs an already formatted raw message to a specific logger.
#define LOGIT_ADD_CONSOLE_DEFAULT()
Macro for adding the default console logger.
#define LOGIT_WAIT()
Macro for waiting for all asynchronous loggers to finish processing.
#define LOGIT_SHUTDOWN()
Macro for shutting down logger system.
#define LOGIT_GET_BUFFERED_ENTRIES(logger_index)
Retrieves buffered structured entries from a specific logger.
#define LOGIT_SECTION_TO(index, name)
Logs a raw section header to a specific logger.
#define LOGIT_INFO_TO(index,...)
#define LOGIT_ADD_LOG_CALLBACK(logger_index, callback)
Registers a callback to receive newly written log records.
#define LOGIT_READ_RECENT_ASC(logger_index, limit, period_ms)
Reads recent records in ascending order (oldest first).
#define LOGIT_REMOVE_LOG_CALLBACK(logger_index, callback_id)
Unregisters a previously added log callback.
#define LOGIT_ADD_MEMORY_LOGGER_SINGLE_MODE(max_records, max_bytes, max_age_ms)
Macro for adding an in-memory logger in single_mode with explicit limits.
#define LOGIT_ERROR_TO(index,...)
#define LOGIT_WARN_TO(index,...)
#define LOGIT_READ_RANGE(logger_index, from_ms, to_ms, limit)
Reads a time-range of records from a backend that supports ILogReader.
#define LOGIT_GET_BUFFERED_STRINGS(logger_index)
Retrieves buffered formatted messages from a specific logger.
Unified umbrella header for the LogIt++ library.
std::string to_string(LogLevel level, int mode=0)
Convert LogLevel to a std::string representation.
Common owning snapshot of a stored log record.