@@ -16,13 +16,14 @@ use opentelemetry_sdk::{
1616use opentelemetry_semantic_conventions:: resource;
1717use settings:: { ConsoleLogSettings , OtlpLogSettings , OtlpTraceSettings } ;
1818use snafu:: { ResultExt as _, Snafu } ;
19- use tracing:: { level_filters :: LevelFilter , subscriber:: SetGlobalDefaultError } ;
19+ use tracing:: subscriber:: SetGlobalDefaultError ;
2020use tracing_subscriber:: { filter:: Directive , layer:: SubscriberExt , EnvFilter , Layer , Registry } ;
2121
2222pub mod settings;
2323
2424type Result < T , E = Error > = std:: result:: Result < T , E > ;
2525
26+ #[ allow( missing_docs) ]
2627#[ derive( Debug , Snafu ) ]
2728pub enum Error {
2829 #[ snafu( display( "unable to install opentelemetry trace exporter" ) ) ]
@@ -126,9 +127,9 @@ pub enum Error {
126127/// [5]: https://docs.rs/opentelemetry_sdk/latest/src/opentelemetry_sdk/logs/log_processor.rs.html
127128pub struct Tracing {
128129 service_name : & ' static str ,
129- console_log_config : SubscriberConfig ,
130- otlp_log_config : SubscriberConfig ,
131- otlp_trace_config : SubscriberConfig ,
130+ console_log_settings : ConsoleLogSettings ,
131+ otlp_log_settings : OtlpLogSettings ,
132+ otlp_trace_settings : OtlpTraceSettings ,
132133 logger_provider : Option < LoggerProvider > ,
133134}
134135
@@ -145,20 +146,23 @@ impl Tracing {
145146 pub fn init ( mut self ) -> Result < Tracing > {
146147 let mut layers: Vec < Box < dyn Layer < Registry > + Sync + Send > > = Vec :: new ( ) ;
147148
148- if self . console_log_config . enabled {
149+ if self . console_log_settings . common_settings . enabled {
149150 let env_filter_layer = env_filter_builder (
150- self . console_log_config . env_var ,
151- self . console_log_config . default_level_filter ,
151+ & self
152+ . console_log_settings
153+ . common_settings
154+ . environment_variable ,
155+ self . console_log_settings . common_settings . default_level ,
152156 ) ;
153157 let console_output_layer =
154158 tracing_subscriber:: fmt:: layer ( ) . with_filter ( env_filter_layer) ;
155159 layers. push ( console_output_layer. boxed ( ) ) ;
156160 }
157161
158- if self . otlp_log_config . enabled {
162+ if self . otlp_log_settings . common_settings . enabled {
159163 let env_filter_layer = env_filter_builder (
160- self . otlp_log_config . env_var ,
161- self . otlp_log_config . default_level_filter ,
164+ & self . otlp_log_settings . common_settings . environment_variable ,
165+ self . otlp_log_settings . common_settings . default_level ,
162166 )
163167 // TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
164168 . add_directive ( "h2=off" . parse ( ) . expect ( "invalid directive" ) ) ;
@@ -183,10 +187,13 @@ impl Tracing {
183187 self . logger_provider = Some ( otel_log) ;
184188 }
185189
186- if self . otlp_trace_config . enabled {
190+ if self . otlp_trace_settings . common_settings . enabled {
187191 let env_filter_layer = env_filter_builder (
188- self . otlp_trace_config . env_var ,
189- self . otlp_trace_config . default_level_filter ,
192+ & self
193+ . otlp_trace_settings
194+ . common_settings
195+ . environment_variable ,
196+ self . otlp_trace_settings . common_settings . default_level ,
190197 )
191198 // TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
192199 . add_directive ( "h2=off" . parse ( ) . expect ( "invalid directive" ) ) ;
@@ -234,12 +241,12 @@ impl Tracing {
234241impl Drop for Tracing {
235242 fn drop ( & mut self ) {
236243 tracing:: debug!(
237- opentelemetry. tracing. enabled = self . otlp_trace_config . enabled,
238- opentelemetry. logger. enabled = self . otlp_log_config . enabled,
244+ opentelemetry. tracing. enabled = self . otlp_trace_settings . common_settings . enabled,
245+ opentelemetry. logger. enabled = self . otlp_log_settings . common_settings . enabled,
239246 "shutting down opentelemetry OTLP providers"
240247 ) ;
241248
242- if self . otlp_trace_config . enabled {
249+ if self . otlp_trace_settings . common_settings . enabled {
243250 // NOTE (@NickLarsenNZ): This might eventually be replaced with something like SdkMeterProvider::shutdown(&self)
244251 // as has been done with the LoggerProvider (further below)
245252 // see: https://github.com/open-telemetry/opentelemetry-rust/pull/1412/files#r1409608679
@@ -318,31 +325,14 @@ impl BuilderState for builder_state::Config {}
318325#[ derive( Default ) ]
319326pub struct TracingBuilder < S : BuilderState > {
320327 service_name : Option < & ' static str > ,
321- console_log_config : SubscriberConfig ,
322- otlp_log_config : SubscriberConfig ,
323- otlp_trace_config : SubscriberConfig ,
328+ console_log_settings : ConsoleLogSettings ,
329+ otlp_log_settings : OtlpLogSettings ,
330+ otlp_trace_settings : OtlpTraceSettings ,
324331
325332 /// Allow the generic to be used (needed for impls).
326333 _marker : std:: marker:: PhantomData < S > ,
327334}
328335
329- #[ derive( Clone , Debug , PartialEq ) ]
330- struct SubscriberConfig {
331- enabled : bool ,
332- env_var : & ' static str ,
333- default_level_filter : LevelFilter ,
334- }
335-
336- impl Default for SubscriberConfig {
337- fn default ( ) -> Self {
338- Self {
339- enabled : false ,
340- env_var : EnvFilter :: DEFAULT_ENV ,
341- default_level_filter : LevelFilter :: OFF ,
342- }
343- }
344- }
345-
346336impl TracingBuilder < builder_state:: PreServiceName > {
347337 /// Set the service name used in OTLP exports, and console output.
348338 ///
@@ -361,17 +351,13 @@ impl TracingBuilder<builder_state::Config> {
361351 /// variable.
362352 pub fn with_console_output (
363353 self ,
364- settings : ConsoleLogSettings ,
354+ console_log_settings : ConsoleLogSettings ,
365355 ) -> TracingBuilder < builder_state:: Config > {
366356 TracingBuilder {
367357 service_name : self . service_name ,
368- console_log_config : SubscriberConfig {
369- enabled : settings. common_settings . enabled ,
370- env_var : settings. common_settings . environment_variable ,
371- default_level_filter : settings. common_settings . default_level ,
372- } ,
373- otlp_log_config : self . otlp_log_config ,
374- otlp_trace_config : self . otlp_trace_config ,
358+ console_log_settings,
359+ otlp_log_settings : self . otlp_log_settings ,
360+ otlp_trace_settings : self . otlp_trace_settings ,
375361 _marker : self . _marker ,
376362 }
377363 }
@@ -383,17 +369,13 @@ impl TracingBuilder<builder_state::Config> {
383369 /// in the opentelemetry crates. See [`Tracing`].
384370 pub fn with_otlp_log_exporter (
385371 self ,
386- settings : OtlpLogSettings ,
372+ otlp_log_settings : OtlpLogSettings ,
387373 ) -> TracingBuilder < builder_state:: Config > {
388374 TracingBuilder {
389375 service_name : self . service_name ,
390- console_log_config : self . console_log_config ,
391- otlp_log_config : SubscriberConfig {
392- enabled : settings. common_settings . enabled ,
393- env_var : settings. common_settings . environment_variable ,
394- default_level_filter : settings. common_settings . default_level ,
395- } ,
396- otlp_trace_config : self . otlp_trace_config ,
376+ console_log_settings : self . console_log_settings ,
377+ otlp_log_settings,
378+ otlp_trace_settings : self . otlp_trace_settings ,
397379 _marker : self . _marker ,
398380 }
399381 }
@@ -405,17 +387,13 @@ impl TracingBuilder<builder_state::Config> {
405387 /// in the opentelemetry crates. See [`Tracing`].
406388 pub fn with_otlp_trace_exporter (
407389 self ,
408- settings : OtlpTraceSettings ,
390+ otlp_trace_settings : OtlpTraceSettings ,
409391 ) -> TracingBuilder < builder_state:: Config > {
410392 TracingBuilder {
411393 service_name : self . service_name ,
412- console_log_config : self . console_log_config ,
413- otlp_log_config : self . otlp_log_config ,
414- otlp_trace_config : SubscriberConfig {
415- enabled : settings. common_settings . enabled ,
416- env_var : settings. common_settings . environment_variable ,
417- default_level_filter : settings. common_settings . default_level ,
418- } ,
394+ console_log_settings : self . console_log_settings ,
395+ otlp_log_settings : self . otlp_log_settings ,
396+ otlp_trace_settings,
419397 _marker : self . _marker ,
420398 }
421399 }
@@ -429,9 +407,9 @@ impl TracingBuilder<builder_state::Config> {
429407 service_name : self
430408 . service_name
431409 . expect ( "service_name must be configured at this point" ) ,
432- console_log_config : self . console_log_config ,
433- otlp_log_config : self . otlp_log_config ,
434- otlp_trace_config : self . otlp_trace_config ,
410+ console_log_settings : self . console_log_settings ,
411+ otlp_log_settings : self . otlp_log_settings ,
412+ otlp_trace_settings : self . otlp_trace_settings ,
435413 logger_provider : None ,
436414 }
437415 }
@@ -448,6 +426,7 @@ fn env_filter_builder(env_var: &str, default_directive: impl Into<Directive>) ->
448426#[ cfg( test) ]
449427mod test {
450428 use settings:: { Build as _, Settings } ;
429+ use tracing:: level_filters:: LevelFilter ;
451430
452431 use super :: * ;
453432
@@ -479,15 +458,18 @@ mod test {
479458 . build ( ) ;
480459
481460 assert_eq ! (
482- trace_guard. console_log_config,
483- SubscriberConfig {
484- enabled: true ,
485- env_var: "ABC_B" ,
486- default_level_filter: LevelFilter :: DEBUG
461+ trace_guard. console_log_settings,
462+ ConsoleLogSettings {
463+ common_settings: Settings {
464+ enabled: true ,
465+ environment_variable: "ABC_B" ,
466+ default_level: LevelFilter :: DEBUG
467+ } ,
468+ log_format: Default :: default ( )
487469 }
488470 ) ;
489- assert ! ( !trace_guard. otlp_log_config . enabled) ;
490- assert ! ( !trace_guard. otlp_trace_config . enabled) ;
471+ assert ! ( !trace_guard. otlp_log_settings . common_settings . enabled) ;
472+ assert ! ( !trace_guard. otlp_trace_settings . common_settings . enabled) ;
491473 }
492474
493475 #[ test]
@@ -518,27 +500,34 @@ mod test {
518500 . build ( ) ;
519501
520502 assert_eq ! (
521- trace_guard. console_log_config,
522- SubscriberConfig {
523- enabled: true ,
524- env_var: "ABC_CONSOLE" ,
525- default_level_filter: LevelFilter :: INFO
503+ trace_guard. console_log_settings,
504+ ConsoleLogSettings {
505+ common_settings: Settings {
506+ enabled: true ,
507+ environment_variable: "ABC_CONSOLE" ,
508+ default_level: LevelFilter :: INFO
509+ } ,
510+ log_format: Default :: default ( )
526511 }
527512 ) ;
528513 assert_eq ! (
529- trace_guard. otlp_log_config,
530- SubscriberConfig {
531- enabled: true ,
532- env_var: "ABC_OTLP_LOG" ,
533- default_level_filter: LevelFilter :: DEBUG
514+ trace_guard. otlp_log_settings,
515+ OtlpLogSettings {
516+ common_settings: Settings {
517+ enabled: true ,
518+ environment_variable: "ABC_OTLP_LOG" ,
519+ default_level: LevelFilter :: DEBUG
520+ } ,
534521 }
535522 ) ;
536523 assert_eq ! (
537- trace_guard. otlp_trace_config,
538- SubscriberConfig {
539- enabled: true ,
540- env_var: "ABC_OTLP_TRACE" ,
541- default_level_filter: LevelFilter :: TRACE
524+ trace_guard. otlp_trace_settings,
525+ OtlpTraceSettings {
526+ common_settings: Settings {
527+ enabled: true ,
528+ environment_variable: "ABC_OTLP_TRACE" ,
529+ default_level: LevelFilter :: TRACE
530+ }
542531 }
543532 ) ;
544533 }
0 commit comments