Skip to main content

origin_telemetry/
spans.rs

1//! Correlation spans.
2//!
3//! Every long-running platform operation opens one of these, so a log line can be
4//! traced back to the sync run, job or account that produced it.
5
6use origin_domain::{AccountId, ConnectorId, JobId, SyncId};
7use tracing::Span;
8
9/// Span covering one synchronisation run.
10pub fn sync(sync: &SyncId, connector: &ConnectorId, account: &AccountId) -> Span {
11    tracing::info_span!(
12        "sync",
13        sync_id = sync.as_str(),
14        connector = connector.as_str(),
15        account_id = account.as_str(),
16    )
17}
18
19/// Span covering one background job.
20pub fn job(job: &JobId, kind: &str) -> Span {
21    tracing::info_span!("job", job_id = job.as_str(), kind = kind)
22}
23
24/// Span covering one outbound request, for rate-limit and latency analysis.
25pub fn request(connector: &ConnectorId, operation: &str) -> Span {
26    tracing::debug_span!(
27        "request",
28        connector = connector.as_str(),
29        operation = operation
30    )
31}