blob_indexer/utils/
telemetry.rs

1use tracing::{subscriber::set_global_default, Subscriber};
2use tracing_log::LogTracer;
3use tracing_subscriber::{
4    fmt::{self, MakeWriter},
5    prelude::__tracing_subscriber_SubscriberExt,
6    EnvFilter, Registry,
7};
8
9/// Gets a subscriber that can be used to initialize the logger.
10pub fn get_subscriber<Sink>(env_filter: String, sink: Sink) -> impl Subscriber + Send + Sync
11where
12    Sink: for<'a> MakeWriter<'a> + Send + Sync + 'static,
13{
14    let env_filter =
15        EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new(env_filter));
16    let formatting_layer = fmt::layer()
17        .compact() // Use the Pretty formatter.
18        .with_writer(sink);
19
20    Registry::default()
21        .with(env_filter)
22        .with(formatting_layer)
23        .with(sentry_tracing::layer())
24}
25
26/// Inits the logger with the given subscriber.
27pub fn init_subscriber(subscriber: impl Subscriber + Send + Sync) {
28    LogTracer::init().expect("Could not initialize formatting layer");
29
30    set_global_default(subscriber).expect("Failed to set subscriber");
31}