//! Production observability support built on `tracing`.
//!
//! This module intentionally uses one shared ordered filter for all log outputs.
//! Local file logging and remote OpenTelemetry logging are output concerns; they
//! do not own separate filter chains.

pub mod config;
mod config_file;
pub mod filter;
pub mod init;
mod local;
mod metrics;
#[cfg(feature = "pi-config")]
mod pi_config_adapter;
pub mod reload;
mod remote;
mod trace;

pub use config::{
    DynamicLogConfig, FieldRuleConfig, FieldRuleOp, FuzzyMatchType, FuzzyRuleConfig, FuzzyRuleKind,
    LogConfig, LogConsoleConfig, LogFilterConfig, LogFilterOverrideConfig, LogFormat,
    LogLocalConfig, LogRemoteConfig, MetricsConfig, ObservabilityConfig, TraceConfig,
};
pub use config_file::{
    observability_config_from_rust_log, reload_observability_filters,
    validate_observability_config, validate_observability_config_path,
};
pub use filter::{FieldRule, FuzzyRule, SharedOrderedFilter};
pub use init::{init_observability, init_observability_from_optional_path, ObservabilityGuards};
#[cfg(feature = "pi-config")]
pub use pi_config_adapter::{
    init_observability_from_pi_config, observability_config_from_pi_config,
    reload_observability_filters_from_pi_config,
};
pub use reload::{FilterReloadHandle, ObservabilityReloadHandle};