Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
kcenon::thread::metrics::LoggingBackend Class Reference

Logging backend for debugging and diagnostics. More...

#include <metrics_backend.h>

Inheritance diagram for kcenon::thread::metrics::LoggingBackend:
Inheritance graph
Collaboration diagram for kcenon::thread::metrics::LoggingBackend:
Collaboration graph

Public Member Functions

 LoggingBackend ()=default
 Default constructor.
 
 ~LoggingBackend () override=default
 Destructor.
 
std::string name () const override
 Get the backend name.
 
std::string export_base (const BaseSnapshot &snapshot) const override
 Export base metrics snapshot.
 
std::string export_enhanced (const EnhancedSnapshot &snapshot) const override
 Export enhanced metrics snapshot.
 
- Public Member Functions inherited from kcenon::thread::metrics::MetricsBackend
virtual ~MetricsBackend ()=default
 Virtual destructor for proper cleanup.
 
virtual void set_prefix (const std::string &prefix)
 Set metric name prefix.
 
const std::string & prefix () const
 Get current metric name prefix.
 
virtual void add_label (const std::string &key, const std::string &value)
 Add a label to all exported metrics.
 
const std::map< std::string, std::string > & labels () const
 Get all configured labels.
 

Additional Inherited Members

- Protected Member Functions inherited from kcenon::thread::metrics::MetricsBackend
 MetricsBackend ()=default
 Default constructor.
 
- Protected Attributes inherited from kcenon::thread::metrics::MetricsBackend
std::string prefix_ {"thread_pool"}
 Metric name prefix.
 
std::map< std::string, std::string > labels_
 Labels to attach to all metrics.
 

Detailed Description

Logging backend for debugging and diagnostics.

Exports metrics in a human-readable format suitable for log files and console output.

Definition at line 236 of file metrics_backend.h.

Constructor & Destructor Documentation

◆ LoggingBackend()

kcenon::thread::metrics::LoggingBackend::LoggingBackend ( )
default

Default constructor.

◆ ~LoggingBackend()

kcenon::thread::metrics::LoggingBackend::~LoggingBackend ( )
overridedefault

Destructor.

Member Function Documentation

◆ export_base()

std::string kcenon::thread::metrics::LoggingBackend::export_base ( const BaseSnapshot & snapshot) const
nodiscardoverridevirtual

Export base metrics snapshot.

Parameters
snapshotThe base metrics snapshot to export.
Returns
Formatted string representation.

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 266 of file metrics_backend.cpp.

266 {
267 std::ostringstream oss;
268 oss << std::fixed << std::setprecision(2);
269
270 oss << "[" << prefix_ << "] Metrics Summary:\n";
271 oss << " Tasks: submitted=" << snapshot.tasks_submitted
272 << ", executed=" << snapshot.tasks_executed
273 << ", failed=" << snapshot.tasks_failed << "\n";
274
275 auto total = snapshot.total_busy_time_ns + snapshot.total_idle_time_ns;
276 double utilization = (total > 0)
277 ? 100.0 * static_cast<double>(snapshot.total_busy_time_ns) / static_cast<double>(total)
278 : 0.0;
279 oss << " Time: busy=" << (snapshot.total_busy_time_ns / 1'000'000.0) << "ms"
280 << ", idle=" << (snapshot.total_idle_time_ns / 1'000'000.0) << "ms"
281 << " (utilization=" << utilization << "%)";
282
283 return oss.str();
284}
std::string prefix_
Metric name prefix.

References kcenon::thread::metrics::MetricsBackend::prefix_, kcenon::thread::metrics::BaseSnapshot::tasks_executed, kcenon::thread::metrics::BaseSnapshot::tasks_failed, kcenon::thread::metrics::BaseSnapshot::tasks_submitted, kcenon::thread::metrics::BaseSnapshot::total_busy_time_ns, and kcenon::thread::metrics::BaseSnapshot::total_idle_time_ns.

◆ export_enhanced()

std::string kcenon::thread::metrics::LoggingBackend::export_enhanced ( const EnhancedSnapshot & snapshot) const
nodiscardoverridevirtual

Export enhanced metrics snapshot.

Parameters
snapshotThe enhanced metrics snapshot to export.
Returns
Formatted string representation.

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 286 of file metrics_backend.cpp.

286 {
287 std::ostringstream oss;
288 oss << std::fixed << std::setprecision(2);
289
290 oss << "[" << prefix_ << "] Enhanced Metrics:\n";
291 oss << " Tasks: submitted=" << snapshot.tasks_submitted
292 << ", executed=" << snapshot.tasks_executed
293 << ", failed=" << snapshot.tasks_failed << "\n";
294
295 oss << " Latency (P50/P90/P99):\n";
296 oss << " Enqueue: " << snapshot.enqueue_latency_p50_us << "/"
297 << snapshot.enqueue_latency_p90_us << "/" << snapshot.enqueue_latency_p99_us << " us\n";
298 oss << " Execute: " << snapshot.execution_latency_p50_us << "/"
299 << snapshot.execution_latency_p90_us << "/" << snapshot.execution_latency_p99_us << " us\n";
300 oss << " Wait: " << snapshot.wait_time_p50_us << "/"
301 << snapshot.wait_time_p90_us << "/" << snapshot.wait_time_p99_us << " us\n";
302
303 oss << " Throughput: " << snapshot.throughput_1s << " ops/sec (1s), "
304 << snapshot.throughput_1m << " ops/sec (1m)\n";
305
306 oss << " Queue: depth=" << snapshot.current_queue_depth
307 << ", peak=" << snapshot.peak_queue_depth
308 << ", avg=" << snapshot.avg_queue_depth << "\n";
309
310 oss << " Workers: active=" << snapshot.active_workers
311 << ", utilization=" << (snapshot.worker_utilization * 100.0) << "%";
312
313 return oss.str();
314}

References kcenon::thread::metrics::EnhancedSnapshot::active_workers, kcenon::thread::metrics::EnhancedSnapshot::avg_queue_depth, kcenon::thread::metrics::EnhancedSnapshot::current_queue_depth, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p50_us, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p90_us, kcenon::thread::metrics::EnhancedSnapshot::enqueue_latency_p99_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p50_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p90_us, kcenon::thread::metrics::EnhancedSnapshot::execution_latency_p99_us, kcenon::thread::metrics::EnhancedSnapshot::peak_queue_depth, kcenon::thread::metrics::MetricsBackend::prefix_, kcenon::thread::metrics::EnhancedSnapshot::tasks_executed, kcenon::thread::metrics::EnhancedSnapshot::tasks_failed, kcenon::thread::metrics::EnhancedSnapshot::tasks_submitted, kcenon::thread::metrics::EnhancedSnapshot::throughput_1m, kcenon::thread::metrics::EnhancedSnapshot::throughput_1s, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p50_us, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p90_us, kcenon::thread::metrics::EnhancedSnapshot::wait_time_p99_us, and kcenon::thread::metrics::EnhancedSnapshot::worker_utilization.

◆ name()

std::string kcenon::thread::metrics::LoggingBackend::name ( ) const
inlinenodiscardoverridevirtual

Get the backend name.

Returns
Human-readable backend identifier (e.g., "prometheus", "json").

Implements kcenon::thread::metrics::MetricsBackend.

Definition at line 248 of file metrics_backend.h.

248 {
249 return "logging";
250 }

The documentation for this class was generated from the following files: