Skip to main content

observability_core/
lib.rs

1//! # Observability Core
2//!
3//! Core traits and foundational components for structured logging and observability.
4//! This crate provides zero-cost abstractions for telemetry, metrics, and structured logging
5//! that can be conditionally compiled based on feature flags.
6//!
7//! ## Features
8//!
9//! - `observability`: Enables all observability features
10//! - `otel-2025`: OpenTelemetry 2025 integration
11//! - `structured-logging`: JSON structured logging support
12//! - `prometheus-federation`: Prometheus metrics federation
13//! - `auto-instrumentation`: Automatic instrumentation capabilities
14
15pub mod batching;
16pub mod context;
17pub mod error;
18pub mod noop;
19pub mod traits;
20
21// Core hexagonal architecture modules for standard logging integration
22pub mod adapters;
23pub mod domain;
24pub mod extension;
25pub mod ports;
26
27// Re-export commonly used types
28pub use batching::{BatchingConfig, BatchingManager};
29pub use context::{
30    ContextFuture,
31    HeaderExtractor,
32    // Header utilities
33    HeaderInjector,
34    TraceContext,
35    W3CTraceContext,
36    clear_current_context,
37    get_current_context,
38    // Thread-local management
39    set_current_context,
40    with_context,
41    with_context_future,
42};
43pub use error::{ObservabilityError, ObservabilityResult};
44pub use noop::NoOpObservabilityPlugin;
45pub use traits::{
46    LogLevel, MetricsCollector, ObservabilityPlugin, SpanGuard, SpanStatus, StructuredLogger,
47};
48
49// Re-export hexagonal architecture types
50pub use adapters::{
51    CompactJsonFormatter, JsonFormatter, LogDirectives, StandardLogAdapter,
52    UnifiedWasmStdoutAdapter, WasmStdoutAdapter, WasmStdoutMetricsAdapter,
53};
54#[cfg(feature = "structured-logging")]
55pub use adapters::{TracingIntegrationBuilder, TracingSubscriberAdapter};
56pub use domain::{
57    BasicMetricType, EnhancedContextEnricher, LogEntry, LogKvExtractor, MetricsEntry,
58    MetricsSource, ProcessorChain, TraceCorrelation, create_counter_metric, create_gauge_metric,
59    create_histogram_metric,
60};
61pub use extension::{
62    GlobalLoggerSingleton, ObservabilityConfig, ObservabilityManager, create_observability_manager,
63};
64pub use ports::{
65    BatchingPort, ContextPort, FormatterPort, MetricsPort, StandardLoggingPort, TransportPort,
66};
67
68/// Version information for the observability core
69pub const VERSION: &str = env!("CARGO_PKG_VERSION");
70
71/// Default batch size for telemetry data
72pub const DEFAULT_BATCH_SIZE: usize = 100;
73
74/// Default flush interval in seconds
75pub const DEFAULT_FLUSH_INTERVAL_SECS: u64 = 5;