#![allow(dead_code, unused_imports)]
pub mod logger;
pub mod metrics;
pub use logger::{
init_logger, AuditLogger, LogFormat, LoggerConfig, PerformanceLogger, StructuredLogger,
};
pub use metrics::{MetricsCollector, MetricsConfig, MetricsRegistry};
use std::sync::Arc;
pub fn initialize_monitoring(
logger_config: LoggerConfig,
metrics_config: MetricsConfig,
) -> Result<MonitoringContext, Box<dyn std::error::Error>> {
init_logger(logger_config)?;
let mut collector = MetricsCollector::new(metrics_config)?;
collector.start_server()?;
let metrics = Arc::new(collector);
Ok(MonitoringContext { metrics })
}
pub struct MonitoringContext {
pub metrics: Arc<MetricsCollector>,
}
impl MonitoringContext {
pub fn record_metric(&self, name: &str, value: f64, labels: Vec<(&str, &str)>) {
self.metrics.record(name, value, labels);
}
pub fn increment_counter(&self, name: &str, labels: Vec<(&str, &str)>) {
self.metrics.increment(name, labels);
}
pub fn update_gauge(&self, name: &str, value: f64, labels: Vec<(&str, &str)>) {
self.metrics.gauge(name, value, labels);
}
pub fn observe_histogram(&self, name: &str, value: f64, labels: Vec<(&str, &str)>) {
self.metrics.histogram(name, value, labels);
}
}