Skip to content

extension

Core observability components for structured logging

This module provides core observability functionality including configuration, global logger singleton, and structured logging integration without external dependencies.

Singleton global logger that initializes once and is shared across all extension instances

Methods

fn get_or_init(config: ObservabilityConfig) -> ObservabilityResult<&''static GlobalLoggerSingleton>

Get or create the singleton instance

This is thread-safe and will initialize exactly once

fn adapter(&self) -> &Arc<StandardLogAdapter>

Get the logger adapter

fn config(&self) -> &ObservabilityConfig

Get the configuration used

Configuration for observability

Fields

FieldTypeDescription
levelStringMinimum log level to process
formatStringOutput format: “json”, “compact”, “plain”
structuredboolEnable structured logging features
context_enrichmentboolEnable context enrichment
default_contextHashMap&lt;String, serde_json::Value&gt;Additional context fields to always include

Methods

fn parse_level(&self) -> ObservabilityResult<LogLevel>

Parse log level from string (global level only, ignores per-crate directives).

fn parse_directives(&self) -> LogDirectives

Parse RUST_LOG-style directives from the level string.

Accepts both simple levels ("info") and per-crate directives ("info,agent_sdk=debug,a2a_protocol_core=trace").

fn create_transport(&self) -> Arc<dyn TransportPort>

Create transport based on format configuration

fn validate(&self) -> ObservabilityResult<()>

Validate configuration

Core observability manager

This provides structured logging integration with standard Rust logging macros (log::info!, log::debug!, etc.) without external extension system dependencies

Methods

fn new(config: ObservabilityConfig) -> ObservabilityResult<Self>

Create a new observability manager with configuration

fn initialize(&mut self) -> ObservabilityResult<()>

Initialize global logging (convenience method)

fn config(&self) -> &ObservabilityConfig

Get current configuration

fn is_enabled(&self, level: LogLevel) -> bool

Check if logging is enabled for a level

fn global_logger() -> Option<Arc<StandardLogAdapter>>

Get the global logger instance (always available with singleton pattern)

fn capabilities(&self) -> Vec<String>

Get capabilities as strings

fn create_observability_manager(config: Option<serde_json::Value>) -> ObservabilityResult<ObservabilityManager>

Factory function for creating observability manager from JSON configuration