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.
Structs
Section titled “Structs”GlobalLoggerSingleton
Section titled “GlobalLoggerSingleton”Singleton global logger that initializes once and is shared across all extension instances
Methods
get_or_init
Section titled “get_or_init”fn get_or_init(config: ObservabilityConfig) -> ObservabilityResult<&''static GlobalLoggerSingleton>Get or create the singleton instance
This is thread-safe and will initialize exactly once
adapter
Section titled “adapter”fn adapter(&self) -> &Arc<StandardLogAdapter>Get the logger adapter
config
Section titled “config”fn config(&self) -> &ObservabilityConfigGet the configuration used
ObservabilityConfig
Section titled “ObservabilityConfig”Configuration for observability
Fields
| Field | Type | Description |
|---|---|---|
level | String | Minimum log level to process |
format | String | Output format: “json”, “compact”, “plain” |
structured | bool | Enable structured logging features |
context_enrichment | bool | Enable context enrichment |
default_context | HashMap<String, serde_json::Value> | Additional context fields to always include |
Methods
parse_level
Section titled “parse_level”fn parse_level(&self) -> ObservabilityResult<LogLevel>Parse log level from string (global level only, ignores per-crate directives).
parse_directives
Section titled “parse_directives”fn parse_directives(&self) -> LogDirectivesParse 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").
create_transport
Section titled “create_transport”fn create_transport(&self) -> Arc<dyn TransportPort>Create transport based on format configuration
validate
Section titled “validate”fn validate(&self) -> ObservabilityResult<()>Validate configuration
ObservabilityManager
Section titled “ObservabilityManager”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
initialize
Section titled “initialize”fn initialize(&mut self) -> ObservabilityResult<()>Initialize global logging (convenience method)
config
Section titled “config”fn config(&self) -> &ObservabilityConfigGet current configuration
is_enabled
Section titled “is_enabled”fn is_enabled(&self, level: LogLevel) -> boolCheck if logging is enabled for a level
global_logger
Section titled “global_logger”fn global_logger() -> Option<Arc<StandardLogAdapter>>Get the global logger instance (always available with singleton pattern)
capabilities
Section titled “capabilities”fn capabilities(&self) -> Vec<String>Get capabilities as strings
Functions
Section titled “Functions”create_observability_manager
Section titled “create_observability_manager”fn create_observability_manager(config: Option<serde_json::Value>) -> ObservabilityResult<ObservabilityManager>Factory function for creating observability manager from JSON configuration