Module logging

Module logging 

Source
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§

BufferedCollector
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.
LogEventBuilder
Builder for creating log events with common context.
LogFilter
A filter for log events.
LogFilterBuilder
Builder for creating filters from CLI arguments or query parameters.
MultiCollector
A collector that writes events to multiple collectors.
NullCollector
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.