Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
monitoring_backend.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6
9#include <memory>
10#include <string>
11
12// Conditional includes based on integration settings
13#ifdef ENABLE_MONITORING_INTEGRATION
14#include <kcenon/monitoring/interfaces/monitoring_interface.h>
15#endif
16
38
39#ifdef ENABLE_MONITORING_INTEGRATION
40
70class monitoring_backend : public integration_backend {
71public:
81 explicit monitoring_backend(
82 std::shared_ptr<monitoring::interfaces::IMonitor> monitor = nullptr)
83 : monitor_(std::move(monitor)) {}
84
88 ~monitoring_backend() override = default;
89
101 log_level normalize_level(int external_level) const override {
102 // monitoring_system uses same level scheme as common::interfaces::log_level
103 return static_cast<log_level>(external_level);
104 }
105
112 std::string get_backend_name() const override {
113 return "monitoring_system";
114 }
115
124 bool requires_initialization() const override {
125 return monitor_ != nullptr;
126 }
127
137 bool initialize() override {
138 if (!monitor_) {
139 return true; // No monitor, nothing to initialize
140 }
141
142 // Register logger metrics with monitoring system
143 // This would typically set up metric collectors, event subscriptions, etc.
144 // Implementation depends on monitoring_system's API
145
146 return true;
147 }
148
157 void shutdown() override {
158 if (!monitor_) {
159 return;
160 }
161
162 // Flush any pending metrics
163 // Unregister from monitoring system
164 // Implementation depends on monitoring_system's API
165 }
166
179 void emit_metric(const std::string& metric_name, double value) {
180 if (!monitor_) {
181 return;
182 }
183
184 // Emit metric to monitoring system
185 // Implementation would call monitor_->record_metric(metric_name, value)
186 // or similar API depending on monitoring_system's interface
187 }
188
199 void publish_event(const std::string& event_type, const std::string& event_data) {
200 if (!monitor_) {
201 return;
202 }
203
204 // Publish event to monitoring system
205 // Implementation would call monitor_->publish_event(event_type, event_data)
206 // or similar API depending on monitoring_system's interface
207 }
208
209private:
210 std::shared_ptr<monitoring::interfaces::IMonitor> monitor_;
211};
212
213#endif // ENABLE_MONITORING_INTEGRATION
214
215} // namespace kcenon::logger::backends
Runtime polymorphism interface for integration backends kcenon.
Automatically toggles monitoring_system integration macros when headers are available.
common::interfaces::log_level log_level