@@ -8,26 +8,31 @@ use opentelemetry_sdk::{
88 propagation:: TraceContextPropagator ,
99 trace:: { self , RandomIdGenerator , Sampler , SdkTracerProvider } ,
1010} ;
11- use tracing:: warn;
12- use tracing_subscriber:: { EnvFilter , Registry , layer:: SubscriberExt } ;
11+ use tracing:: { Level , warn} ;
12+ use tracing_subscriber:: { EnvFilter , Layer , Registry , filter , layer:: SubscriberExt } ;
1313
1414/// Register a subscriber as global default to process span data.
1515///
1616/// It should only be called once!
1717pub fn init_subscriber ( ) -> anyhow:: Result < ( ) > {
1818 // Filter the spans that are shown based on the RUST_LOG env var or the default value ("info")
19- let env_filter = EnvFilter :: try_from_default_env ( )
20- . unwrap_or_else ( |_| EnvFilter :: new ( "info" ) )
21- // Downgrade opentelemetry_sdk errors to warnings
22- . add_directive ( "opentelemetry_sdk=warn" . parse ( ) ?) ;
19+ let env_filter = EnvFilter :: try_from_default_env ( ) . unwrap_or_else ( |_| EnvFilter :: new ( "info" ) ) ;
20+
21+ // Create a filter that excludes error-level events from opentelemetry_sdk
22+ let fmt_filter = filter:: filter_fn ( |metadata| {
23+ !( metadata. level ( ) == & Level :: ERROR && metadata. target ( ) . starts_with ( "opentelemetry_sdk" ) )
24+ } ) ;
2325
2426 // If the binary is compiled in debug mode (aka for development)
2527 // use the compact format for logs
2628 if cfg ! ( debug_assertions) {
27- tracing_subscriber:: fmt ( )
28- . compact ( )
29- . with_env_filter ( env_filter)
30- . init ( ) ;
29+ let subscriber = Registry :: default ( ) . with ( env_filter) . with (
30+ tracing_subscriber:: fmt:: layer ( )
31+ . compact ( )
32+ . with_filter ( fmt_filter) ,
33+ ) ;
34+
35+ tracing:: subscriber:: set_global_default ( subscriber) ?;
3136 } else {
3237 let observability_config = & nittei_utils:: config:: APP_CONFIG . observability ;
3338 // In production, use the JSON format for logs
@@ -62,7 +67,8 @@ pub fn init_subscriber() -> anyhow::Result<()> {
6267 . with (
6368 tracing_subscriber:: fmt:: layer ( )
6469 . json ( )
65- . with_current_span ( false ) ,
70+ . with_current_span ( false )
71+ . with_filter ( fmt_filter) ,
6672 )
6773 . with ( telemetry_layer) ;
6874
@@ -73,7 +79,8 @@ pub fn init_subscriber() -> anyhow::Result<()> {
7379 let subscriber = Registry :: default ( ) . with ( env_filter) . with (
7480 tracing_subscriber:: fmt:: layer ( )
7581 . json ( )
76- . with_current_span ( false ) ,
82+ . with_current_span ( false )
83+ . with_filter ( fmt_filter) ,
7784 ) ;
7885
7986 // Set the global subscriber
0 commit comments