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;
10#[doc(hidden)]
11pub mod pressure;
12mod fifo;
13pub use fifo::ingress_fifo_process_generation;
14pub use admission::{
15    AdmissionCapacityFacts, AdmissionCapacitySubmission, AdmissionConstruction,
16    AdmissionConstructionFailure, AdmissionEventContext, AdmissionRecognizedIngress,
17    admission_capacity_layouts,
18};
19mod calendar_writer;
20mod context_logging;
21mod context_record;
22pub use context_record::{ContextRecord, ContextRecordPayload, OwnedUnifiedContext};
23pub use context_logging::{ContextLoggingConfig, ContextLoggingError, FullContextProfile, JsonFormat, SummaryProfile, SummaryFormat, MissingField};
24mod call;
25mod chain;
26mod diagnostic;
27mod request_diagnostic;
28pub mod root_diagnostic;
29pub use diagnostic::{
30    DbOwnerObservation, DbOwnerDisposition,
31    DiagnosticIoFailure, DiagnosticOutputSnapshot, DiagnosticShutdown, DiagnosticSubmission,
32    EMERGENCY_FILE_NAME, EmergencyDiagnosticHandle, EmergencyDiagnostics, EmergencyInitError,
33    BOOTSTRAP_FILE_NAME, BootstrapDiagnostics, SourceOutput,
34};
35pub use request_diagnostic::{
36    BoundaryDiagnosticDelivery, ContextBindingError, DiagnosticContextField,
37    DiagnosticContextMissing, DiagnosticDbOperation, DiagnosticRequestPhase, DiagnosticTaskId,
38    DiagnosticZone, DiagnosticZoneError, EarlyRequestContext, ExistingDiagnosticReceipt,
39    FrameworkRequestFailure, RequestBoundaryReference, RequestDiagnosticScope,
40    RequestSourceReceipt,
41};
42pub use root_diagnostic::{
43    PublicRequestFailure, RequestTransactionFact, RootActiveStage, RootDiagnosticScope,
44    RootOutcomeFacts, RootRequestEvent, RootRequestFailure, RootSupervisionReturn,
45};
46mod event;
47#[doc(hidden)]
48#[allow(dead_code)] // Cross-crate candidate is consumed by the later Runtime integration slice.
49pub mod file;
50mod logger;
51mod metrics;
52mod production_fact;
53mod trace;
54
55pub use calendar_writer::{FileLoggingConfig, Rotation};
56pub use call::{ActiveCall, CallKind, CallOutcome};
57pub use chain::{
58    ActiveStage, BottleneckIdentity, CapacityDimension, CapacityObservation, ChainFieldError,
59    DatabaseDisposition, EventContext, Health, LifecycleState, LifecycleTimeoutStage,
60    OutboundAuthority, OutboundObservation, OutboundResult, RejectReason, RequestIdentity,
61    RouteIdentity, Stage, StageOutcome, TransactionOutcome, TransactionTerminalObservation,
62};
63pub use event::{
64    DomainEvent, DomainEventError, DomainValue, EventLevel, MAX_DOMAIN_EVENT_NAME_BYTES,
65    MAX_DOMAIN_FIELD_NAME_BYTES, MAX_DOMAIN_FIELDS, MAX_DOMAIN_PAYLOAD_BYTES,
66    MAX_DOMAIN_STRING_BYTES,
67};
68pub use logger::{
69    FlushError, FlushFuture, InitError, Observer, ObserverConfig, OutputStage, global, init,
70    init_file,
71};
72pub use metrics::{LATENCY_BUCKET_UPPER_MS, MetricsSnapshot};
73#[doc(hidden)]
74pub use production_fact::{
75    ObservabilityProductionFactError, ObservabilityProductionFactInput,
76    ObservabilitySourceCandidateInput, ObservabilitySourceCandidateRejection,
77    VerifiedObservabilitySourceCandidateOwner, bind_observability_source_candidate,
78    observability_production_fact_input, observability_source_candidate_input,
79};
80pub use saddle_core::{CallContext, SpanId, TraceCorrelationId, TraceId};
81pub use trace::{InboundTrace, TraceIdError, trace_id_from_hex};
82
83#[doc(hidden)]
84pub use diagnostic::RpcPhysicalOwnerReceipt;