Skip to main content

saddle_observability/
lib.rs

1//! Saddle structured logging and trace correlation.
2//!
3//! The V1 scope is Log and Trace only; the broader name does not imply Metrics
4//! or monitoring-platform delivery in V1. Framework components create an
5//! [`Observer`] once and use [`Observer::start_external_call`] and
6//! [`Observer::start_child_call`] around their async work. Records are queued
7//! without waiting for the output writer.
8
9mod admission;
10pub use admission::{
11    AdmissionCapacityFacts, AdmissionCapacitySubmission, AdmissionConstruction,
12    AdmissionConstructionFailure, AdmissionEventContext, admission_capacity_layouts,
13};
14mod calendar_writer;
15mod call;
16mod chain;
17mod diagnostic;
18mod request_diagnostic;
19pub mod root_diagnostic;
20pub use diagnostic::{
21    DiagnosticIoFailure, DiagnosticOutputSnapshot, DiagnosticShutdown, DiagnosticSubmission,
22    EMERGENCY_FILE_NAME, EmergencyDiagnosticHandle, EmergencyDiagnostics, EmergencyInitError,
23};
24pub use request_diagnostic::{
25    BoundaryDiagnosticDelivery, ContextBindingError, DiagnosticContextField,
26    DiagnosticContextMissing, DiagnosticDbOperation, DiagnosticRequestPhase, DiagnosticTaskId,
27    DiagnosticZone, DiagnosticZoneError, EarlyRequestContext, ExistingDiagnosticReceipt,
28    FrameworkRequestFailure, RequestBoundaryReference, RequestDiagnosticScope,
29    RequestSourceReceipt,
30};
31pub use root_diagnostic::{
32    PublicRequestFailure, RequestTransactionFact, RootActiveStage, RootDiagnosticScope,
33    RootOutcomeFacts, RootRequestEvent, RootRequestFailure, RootSupervisionReturn,
34};
35mod event;
36#[doc(hidden)]
37#[allow(dead_code)] // Cross-crate candidate is consumed by the later Runtime integration slice.
38pub mod file;
39mod logger;
40mod metrics;
41mod production_fact;
42mod trace;
43
44pub use calendar_writer::{FileLoggingConfig, Rotation};
45pub use call::{ActiveCall, CallKind, CallOutcome};
46pub use chain::{
47    ActiveStage, BottleneckIdentity, CapacityDimension, CapacityObservation, ChainFieldError,
48    DatabaseDisposition, EventContext, Health, LifecycleState, LifecycleTimeoutStage,
49    OutboundAuthority, OutboundObservation, OutboundResult, RejectReason, RequestIdentity,
50    RouteIdentity, Stage, StageOutcome, TransactionOutcome, TransactionTerminalObservation,
51};
52pub use event::{
53    DomainEvent, DomainEventError, DomainValue, EventLevel, MAX_DOMAIN_EVENT_NAME_BYTES,
54    MAX_DOMAIN_FIELD_NAME_BYTES, MAX_DOMAIN_FIELDS, MAX_DOMAIN_PAYLOAD_BYTES,
55    MAX_DOMAIN_STRING_BYTES,
56};
57pub use logger::{
58    FlushError, FlushFuture, InitError, Observer, ObserverConfig, OutputStage, global, init,
59    init_file,
60};
61pub use metrics::{LATENCY_BUCKET_UPPER_MS, MetricsSnapshot};
62#[doc(hidden)]
63pub use production_fact::{
64    ObservabilityProductionFactError, ObservabilityProductionFactInput,
65    ObservabilitySourceCandidateInput, ObservabilitySourceCandidateRejection,
66    VerifiedObservabilitySourceCandidateOwner, bind_observability_source_candidate,
67    observability_production_fact_input, observability_source_candidate_input,
68};
69pub use saddle_core::{CallContext, SpanId, TraceCorrelationId, TraceId};
70pub use trace::{InboundTrace, TraceIdError, trace_id_from_hex};