adk_telemetry/lib.rs
1//! # ADK Telemetry
2//!
3//! Production-grade observability for ADK using structured logging and distributed tracing.
4//!
5//! ## Features
6//! - Structured logging with `tracing`
7//! - OpenTelemetry integration for distributed tracing
8//! - OTLP export for observability backends (Jaeger, Datadog, etc.)
9//! - Automatic context propagation
10//! - OTel GenAI Semantic Conventions (v1.41.0) via `genai-semconv` feature (enabled by default)
11//!
12//! ## Usage
13//!
14//! ```rust
15//! use adk_telemetry::{init_telemetry, info, instrument};
16//!
17//! fn main() -> Result<(), adk_telemetry::TelemetryError> {
18//! // Initialize telemetry in your main
19//! init_telemetry("my-service")?;
20//!
21//! // Use logging macros
22//! #[instrument]
23//! async fn my_function() {
24//! info!("Function called");
25//! }
26//! Ok(())
27//! }
28//! ```
29
30pub mod init;
31pub mod span_exporter;
32pub mod spans;
33
34// GenAI Semantic Conventions module (feature-gated)
35#[cfg(feature = "genai-semconv")]
36pub mod semconv;
37
38// Content event configuration (feature-gated)
39#[cfg(feature = "genai-semconv")]
40pub mod config;
41
42// Content event emitter (feature-gated)
43#[cfg(feature = "genai-semconv")]
44pub mod events;
45
46// Re-export tracing macros for convenience
47pub use tracing::{Span, debug, error, info, instrument, trace, warn};
48
49// Re-export span helpers
50pub use spans::*;
51
52// Re-export span exporter (ADK-Go style)
53pub use span_exporter::*;
54
55// Re-export init functions and error type
56pub use init::{TelemetryError, init_telemetry, init_with_adk_exporter, shutdown_telemetry};
57#[cfg(feature = "otlp")]
58pub use init::{build_otlp_layer, init_with_otlp};
59
60// Re-export metrics
61#[cfg(feature = "otlp")]
62pub use opentelemetry::global;
63#[cfg(feature = "otlp")]
64pub use opentelemetry::metrics::{Meter, MeterProvider};
65
66// Re-export key semconv types for convenience
67#[cfg(feature = "genai-semconv")]
68pub use semconv::{GenAiOperation, GenAiProvider, GenAiResponseRecorder, GenAiSpanBuilder};