Expand description
Structured logging for trace execution.
This module provides a comprehensive logging system for XERV with:
- Correlation IDs: Every log event can be associated with trace_id, node_id, and pipeline_id
- Structured Events: Events contain typed fields for filtering and aggregation
- Buffered Collection: Thread-safe ring buffer for in-memory log storage
- Flexible Filtering: Query logs by level, category, trace, node, pipeline, time range, and message content
- Real-time Subscribers: Register callbacks for immediate event notifications
§Architecture
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
│ LogEvent │────>│ LogCollector │────>│ Subscribers │
│ (with IDs) │ │ (buffer) │ │ (callbacks) │
└─────────────┘ └──────────────┘ └───────────────┘
│
v
┌──────────────┐
│ LogFilter │
│ (query) │
└──────────────┘§Example
ⓘ
use xerv_core::logging::{LogEvent, LogCategory, LogLevel, BufferedCollector, LogContext};
use std::sync::Arc;
// Create a collector
let collector = Arc::new(BufferedCollector::with_default_capacity());
// Create a context for a specific trace
let ctx = LogContext::new(collector.clone())
.with_trace_id(trace_id)
.with_pipeline_id("order_pipeline");
// Log events with automatic correlation
ctx.info(LogCategory::Trace, "Trace started");
// Create a node-specific context
let node_ctx = ctx.for_node(NodeId::new(1));
node_ctx.debug(LogCategory::Node, "Processing input");
// Query logs
let errors = collector.by_level(LogLevel::Error);
let trace_logs = collector.by_trace(trace_id);Structs§
- Buffered
Collector - Thread-safe log collector with a bounded ring buffer.
- LogContext
- Context for logging within a specific trace/node.
- LogEvent
- A structured log event with correlation IDs.
- LogEvent
Builder - Builder for creating log events with common context.
- LogFilter
- A filter for log events.
- LogFilter
Builder - Builder for creating filters from CLI arguments or query parameters.
- Multi
Collector - A collector that writes events to multiple collectors.
- Null
Collector - A no-op collector that discards all events.
Enums§
- LogCategory
- Category of log event.
- LogLevel
- Log severity level.
Constants§
- DEFAULT_
BUFFER_ CAPACITY - Maximum number of events to keep in the default buffer.
Traits§
- LogCollector
- Trait for log event collectors.