9#ifndef KCENON_MONITORING_ADAPTERS_LOGGER_TO_MONITORING_ADAPTER_H
10#define KCENON_MONITORING_ADAPTERS_LOGGER_TO_MONITORING_ADAPTER_H
36#include <kcenon/common/interfaces/logger_interface.h>
37#include <kcenon/common/interfaces/monitoring_interface.h>
39namespace kcenon {
namespace monitoring {
56 std::shared_ptr<event_bus> bus,
57 std::shared_ptr<common::interfaces::ILogger> logger =
nullptr
58 ) :
bus_(std::move(bus)),
logger_(std::move(logger)) {}
71 void set_logger(std::shared_ptr<common::interfaces::ILogger> logger) {
78 std::shared_ptr<common::interfaces::ILogger>
get_logger()
const {
86 std::vector<metric> out;
89 auto monitorable = std::dynamic_pointer_cast<common::interfaces::IMonitorable>(
logger_);
91 auto metrics_result = monitorable->get_monitoring_data();
92 if (metrics_result.is_ok()) {
93 const auto& snapshot = metrics_result.value();
95 for (
const auto& m : snapshot.metrics) {
97 converted.
name = m.name;
98 converted.
value = m.value;
100 out.push_back(converted);
105 return common::ok(std::move(out));
121 auto monitorable = std::dynamic_pointer_cast<common::interfaces::IMonitorable>(
logger_);
123 auto metrics_result = monitorable->get_monitoring_data();
124 if (metrics_result.is_ok()) {
125 const auto& snapshot = metrics_result.value();
126 for (
const auto& m : snapshot.metrics) {
127 if (m.name.find(
"messages_logged") != std::string::npos ||
128 m.name.find(
"log_rate") != std::string::npos) {
139 std::shared_ptr<event_bus>
bus_;
140 std::shared_ptr<common::interfaces::ILogger>
logger_;
Logger system adapter using dependency injection (Phase 2.3.3)
void set_logger(std::shared_ptr< common::interfaces::ILogger > logger)
Set or replace the logger instance.
common::Result< std::vector< metric > > collect_metrics()
Collect metrics from logger if available (Phase 2.3.3)
common::VoidResult register_logger(const std::string &)
Register a logger instance by name.
std::shared_ptr< event_bus > bus_
std::shared_ptr< common::interfaces::ILogger > logger_
logger_to_monitoring_adapter(std::shared_ptr< event_bus > bus, std::shared_ptr< common::interfaces::ILogger > logger=nullptr)
Constructor with optional logger injection.
bool is_logger_system_available() const
Check if logger is available.
double get_current_log_rate() const
Get current log rate (if logger supports metrics)
std::shared_ptr< common::interfaces::ILogger > get_logger() const
Get the current logger instance.
Lightweight event bus implementation for monitoring system.
Common event type definitions for monitoring system.
Adapter for metric types to support interface definitions.
Result pattern type definitions for monitoring system.
Basic metric structure for interface compatibility.
std::chrono::system_clock::time_point timestamp
std::variant< double, int64_t, std::string > value