#![forbid(unsafe_code)]
#![warn(clippy::print_stdout)]
mod context;
mod formatter;
mod middleware;
mod request_id;
mod trace_context;
pub use context::{MissingRequestContext, OperationId, RequestContext, TraceContext};
pub use formatter::JsonLayer;
pub use middleware::{ObservabilityConfig, ObservabilityLayer, ObservabilityService};
pub use request_id::{InvalidRequestId, RequestId};
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub enum TraceContextLevel {
#[default]
Level1,
Level2,
}
impl TraceContextLevel {
#[must_use]
pub const fn as_u8(self) -> u8 {
match self {
Self::Level1 => 1,
Self::Level2 => 2,
}
}
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
#[non_exhaustive]
pub enum FieldConvention {
#[default]
Generic,
Gcp,
Aws,
Azure,
}
#[cfg(test)]
mod tests {
use super::{FieldConvention, TraceContextLevel};
#[test]
fn generic_is_the_default_field_convention() {
assert_eq!(FieldConvention::default(), FieldConvention::Generic);
}
#[test]
fn level_one_is_the_default_trace_context_level() {
assert_eq!(TraceContextLevel::default(), TraceContextLevel::Level1);
assert_eq!(TraceContextLevel::Level1.as_u8(), 1);
assert_eq!(TraceContextLevel::Level2.as_u8(), 2);
}
}