Skip to main content

Crate axum_observability

Crate axum_observability 

Source
Expand description

Request correlation and structured terminal access logging for Axum.

ObservabilityLayer validates or generates request IDs, accepts strict W3C trace context, installs a RequestContext extension, and emits one terminal access event after the response body completes or is abandoned. JsonLayer formats those records and application tracing events without installing a global subscriber.

use axum::{Router, routing::get};
use axum_observability::{ObservabilityConfig, ObservabilityLayer};
use tracing_subscriber::prelude::*;

let config = ObservabilityConfig::default();
let subscriber = tracing_subscriber::registry()
    .with(config.json_layer(std::io::sink));
let app: Router = Router::new()
    .route("/health", get(|| async { "ok" }))
    .layer(ObservabilityLayer::new(config));

Structs§

JsonLayer
A composable newline-delimited JSON tracing layer.
MissingRequestContext
Rejection returned when RequestContext is extracted without the observability middleware installed.
ObservabilityConfig
Configuration for ObservabilityLayer.
ObservabilityLayer
Cloneable Tower layer that installs correlation and terminal access logs.
ObservabilityService
Service produced by ObservabilityLayer.
OperationId
Stable application operation name attached to request or response extensions.
RequestContext
Correlation metadata installed in every observed request’s extensions.
RequestId
A request identifier selected by the configured request-ID policy.
TraceContext
Validated inbound W3C trace context.

Enums§

FieldConvention
Structured logging field convention.
InvalidRequestId
Reason a request identifier failed baseline validation.
TraceContextLevel
W3C Trace Context level used for inbound validation and projection.