Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
kcenon::logger::metrics::logger_performance_stats Struct Reference

Performance statistics for logger operations. More...

#include <logger_metrics.h>

Collaboration diagram for kcenon::logger::metrics::logger_performance_stats:
Collaboration graph

Classes

struct  writer_stats_compat
 

Public Member Functions

 logger_performance_stats ()=default
 
 logger_performance_stats (const logger_performance_stats &other)
 
logger_performance_statsoperator= (const logger_performance_stats &other)
 
 logger_performance_stats (logger_performance_stats &&other) noexcept
 
double get_messages_per_second () const
 Get messages per second.
 
uint64_t get_avg_enqueue_time_ns () const
 Get average enqueue time in nanoseconds.
 
double get_queue_utilization_percent () const
 Get queue utilization percentage.
 
double get_drop_rate_percent () const
 
double get_bytes_per_second () const
 
void reset ()
 Reset all statistics.
 

Public Attributes

std::atomic< uint64_t > messages_logged {0}
 Total messages logged.
 
std::atomic< uint64_t > messages_dropped {0}
 Messages dropped due to queue full.
 
std::atomic< uint64_t > total_log_time_ns {0}
 Total time spent logging (nanoseconds)
 
std::atomic< uint64_t > queue_size {0}
 Current queue size.
 
std::atomic< uint64_t > max_queue_size {0}
 Maximum queue size reached.
 
std::atomic< uint64_t > writer_errors {0}
 Number of writer errors.
 
std::atomic< uint64_t > flush_operations {0}
 Number of flush operations.
 
std::atomic< uint64_t > messages_enqueued {0}
 Legacy alias for enqueued messages.
 
std::atomic< uint64_t > messages_processed {0}
 Legacy alias for processed messages.
 
std::map< std::string, writer_stats_compatwriter_stats
 Legacy per-writer statistics.
 

Detailed Description

Performance statistics for logger operations.

Examples
metrics_demo.cpp.

Definition at line 25 of file logger_metrics.h.

Constructor & Destructor Documentation

◆ logger_performance_stats() [1/3]

kcenon::logger::metrics::logger_performance_stats::logger_performance_stats ( )
default

◆ logger_performance_stats() [2/3]

kcenon::logger::metrics::logger_performance_stats::logger_performance_stats ( const logger_performance_stats & other)
inline

Definition at line 50 of file logger_metrics.h.

51 : messages_logged(other.messages_logged.load()),
52 messages_dropped(other.messages_dropped.load()),
53 total_log_time_ns(other.total_log_time_ns.load()),
54 queue_size(other.queue_size.load()),
55 max_queue_size(other.max_queue_size.load()),
56 writer_errors(other.writer_errors.load()),
57 flush_operations(other.flush_operations.load()),
58 messages_enqueued(other.messages_enqueued.load()),
59 messages_processed(other.messages_processed.load()),
60 writer_stats(other.writer_stats) {}
std::atomic< uint64_t > flush_operations
Number of flush operations.
std::atomic< uint64_t > queue_size
Current queue size.
std::map< std::string, writer_stats_compat > writer_stats
Legacy per-writer statistics.
std::atomic< uint64_t > messages_enqueued
Legacy alias for enqueued messages.
std::atomic< uint64_t > total_log_time_ns
Total time spent logging (nanoseconds)
std::atomic< uint64_t > writer_errors
Number of writer errors.
std::atomic< uint64_t > messages_dropped
Messages dropped due to queue full.
std::atomic< uint64_t > messages_processed
Legacy alias for processed messages.
std::atomic< uint64_t > messages_logged
Total messages logged.
std::atomic< uint64_t > max_queue_size
Maximum queue size reached.

◆ logger_performance_stats() [3/3]

kcenon::logger::metrics::logger_performance_stats::logger_performance_stats ( logger_performance_stats && other)
inlinenoexcept

Definition at line 79 of file logger_metrics.h.

80 : messages_logged(other.messages_logged.load()),
81 messages_dropped(other.messages_dropped.load()),
82 total_log_time_ns(other.total_log_time_ns.load()),
83 queue_size(other.queue_size.load()),
84 max_queue_size(other.max_queue_size.load()),
85 writer_errors(other.writer_errors.load()),
86 flush_operations(other.flush_operations.load()),
87 messages_enqueued(other.messages_enqueued.load()),
88 messages_processed(other.messages_processed.load()),
89 writer_stats(std::move(other.writer_stats)) {}

Member Function Documentation

◆ get_avg_enqueue_time_ns()

uint64_t kcenon::logger::metrics::logger_performance_stats::get_avg_enqueue_time_ns ( ) const
inline

Get average enqueue time in nanoseconds.

Examples
metrics_demo.cpp.

Definition at line 104 of file logger_metrics.h.

104 {
105 auto msgs = messages_logged.load();
106 auto time_ns = total_log_time_ns.load();
107 if (msgs == 0) return 0;
108 return time_ns / msgs;
109 }

References messages_logged, and total_log_time_ns.

Referenced by print_metrics().

Here is the caller graph for this function:

◆ get_bytes_per_second()

double kcenon::logger::metrics::logger_performance_stats::get_bytes_per_second ( ) const
inline

Definition at line 130 of file logger_metrics.h.

130 {
131 return 0.0;
132 }

◆ get_drop_rate_percent()

double kcenon::logger::metrics::logger_performance_stats::get_drop_rate_percent ( ) const
inline

Definition at line 121 of file logger_metrics.h.

121 {
122 auto enqueued = messages_enqueued.load();
123 if (enqueued == 0) {
124 return 0.0;
125 }
126 auto dropped = messages_dropped.load();
127 return static_cast<double>(dropped) * 100.0 / static_cast<double>(enqueued);
128 }

References messages_dropped, and messages_enqueued.

◆ get_messages_per_second()

double kcenon::logger::metrics::logger_performance_stats::get_messages_per_second ( ) const
inline

Get messages per second.

Examples
metrics_demo.cpp.

Definition at line 94 of file logger_metrics.h.

94 {
95 auto msgs = messages_logged.load();
96 auto time_ns = total_log_time_ns.load();
97 if (time_ns == 0) return 0.0;
98 return static_cast<double>(msgs) * 1'000'000'000.0 / static_cast<double>(time_ns);
99 }

References messages_logged, and total_log_time_ns.

Referenced by print_metrics().

Here is the caller graph for this function:

◆ get_queue_utilization_percent()

double kcenon::logger::metrics::logger_performance_stats::get_queue_utilization_percent ( ) const
inline

Get queue utilization percentage.

Examples
metrics_demo.cpp.

Definition at line 114 of file logger_metrics.h.

114 {
115 auto current = queue_size.load();
116 auto max_size = max_queue_size.load();
117 if (max_size == 0) return 0.0;
118 return static_cast<double>(current) * 100.0 / static_cast<double>(max_size);
119 }

References max_queue_size, and queue_size.

Referenced by print_metrics().

Here is the caller graph for this function:

◆ operator=()

logger_performance_stats & kcenon::logger::metrics::logger_performance_stats::operator= ( const logger_performance_stats & other)
inline

Definition at line 62 of file logger_metrics.h.

62 {
63 if (this != &other) {
64 messages_logged.store(other.messages_logged.load());
65 messages_dropped.store(other.messages_dropped.load());
66 total_log_time_ns.store(other.total_log_time_ns.load());
67 queue_size.store(other.queue_size.load());
68 max_queue_size.store(other.max_queue_size.load());
69 writer_errors.store(other.writer_errors.load());
70 flush_operations.store(other.flush_operations.load());
71 messages_enqueued.store(other.messages_enqueued.load());
72 messages_processed.store(other.messages_processed.load());
73 writer_stats = other.writer_stats;
74 }
75 return *this;
76 }

References flush_operations, max_queue_size, messages_dropped, messages_enqueued, messages_logged, messages_processed, queue_size, total_log_time_ns, writer_errors, and writer_stats.

◆ reset()

void kcenon::logger::metrics::logger_performance_stats::reset ( )
inline

Reset all statistics.

Definition at line 137 of file logger_metrics.h.

137 {
138 messages_logged.store(0);
139 messages_dropped.store(0);
140 total_log_time_ns.store(0);
141 queue_size.store(0);
142 max_queue_size.store(0);
143 writer_errors.store(0);
144 flush_operations.store(0);
145 messages_enqueued.store(0);
146 messages_processed.store(0);
147 writer_stats.clear();
148 }

References flush_operations, max_queue_size, messages_dropped, messages_enqueued, messages_logged, messages_processed, queue_size, total_log_time_ns, writer_errors, and writer_stats.

Referenced by kcenon::logger::logger::enable_metrics_collection().

Here is the caller graph for this function:

Member Data Documentation

◆ flush_operations

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::flush_operations {0}

Number of flush operations.

Examples
metrics_demo.cpp.

Definition at line 32 of file logger_metrics.h.

32{0};

Referenced by operator=(), print_metrics(), kcenon::logger::metrics::record_flush_operation(), and reset().

◆ max_queue_size

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::max_queue_size {0}

Maximum queue size reached.

Definition at line 30 of file logger_metrics.h.

30{0};

Referenced by get_queue_utilization_percent(), operator=(), reset(), and kcenon::logger::metrics::update_queue_size().

◆ messages_dropped

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::messages_dropped {0}

Messages dropped due to queue full.

Examples
metrics_demo.cpp.

Definition at line 27 of file logger_metrics.h.

27{0};

Referenced by get_drop_rate_percent(), operator=(), print_metrics(), kcenon::logger::metrics::record_message_dropped(), and reset().

◆ messages_enqueued

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::messages_enqueued {0}

◆ messages_logged

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::messages_logged {0}

◆ messages_processed

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::messages_processed {0}

Legacy alias for processed messages.

Definition at line 36 of file logger_metrics.h.

36{0};

Referenced by operator=(), kcenon::logger::metrics::record_message_logged(), and reset().

◆ queue_size

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::queue_size {0}

Current queue size.

Definition at line 29 of file logger_metrics.h.

29{0};

Referenced by get_queue_utilization_percent(), operator=(), reset(), and kcenon::logger::metrics::update_queue_size().

◆ total_log_time_ns

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::total_log_time_ns {0}

Total time spent logging (nanoseconds)

Examples
metrics_demo.cpp.

Definition at line 28 of file logger_metrics.h.

28{0};

Referenced by get_avg_enqueue_time_ns(), get_messages_per_second(), operator=(), print_metrics(), kcenon::logger::metrics::record_message_logged(), and reset().

◆ writer_errors

std::atomic<uint64_t> kcenon::logger::metrics::logger_performance_stats::writer_errors {0}

Number of writer errors.

Examples
metrics_demo.cpp.

Definition at line 31 of file logger_metrics.h.

31{0};

Referenced by operator=(), print_metrics(), kcenon::logger::metrics::record_writer_error(), and reset().

◆ writer_stats

std::map<std::string, writer_stats_compat> kcenon::logger::metrics::logger_performance_stats::writer_stats

Legacy per-writer statistics.

Definition at line 46 of file logger_metrics.h.

Referenced by operator=(), and reset().


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