@@ -16,13 +16,14 @@ use opentelemetry_sdk::{
16
16
use opentelemetry_semantic_conventions:: resource;
17
17
use settings:: { ConsoleLogSettings , OtlpLogSettings , OtlpTraceSettings } ;
18
18
use snafu:: { ResultExt as _, Snafu } ;
19
- use tracing:: { level_filters :: LevelFilter , subscriber:: SetGlobalDefaultError } ;
19
+ use tracing:: subscriber:: SetGlobalDefaultError ;
20
20
use tracing_subscriber:: { filter:: Directive , layer:: SubscriberExt , EnvFilter , Layer , Registry } ;
21
21
22
22
pub mod settings;
23
23
24
24
type Result < T , E = Error > = std:: result:: Result < T , E > ;
25
25
26
+ #[ allow( missing_docs) ]
26
27
#[ derive( Debug , Snafu ) ]
27
28
pub enum Error {
28
29
#[ snafu( display( "unable to install opentelemetry trace exporter" ) ) ]
@@ -126,9 +127,9 @@ pub enum Error {
126
127
/// [5]: https://docs.rs/opentelemetry_sdk/latest/src/opentelemetry_sdk/logs/log_processor.rs.html
127
128
pub struct Tracing {
128
129
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 ,
132
133
logger_provider : Option < LoggerProvider > ,
133
134
}
134
135
@@ -145,20 +146,23 @@ impl Tracing {
145
146
pub fn init ( mut self ) -> Result < Tracing > {
146
147
let mut layers: Vec < Box < dyn Layer < Registry > + Sync + Send > > = Vec :: new ( ) ;
147
148
148
- if self . console_log_config . enabled {
149
+ if self . console_log_settings . common_settings . enabled {
149
150
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 ,
152
156
) ;
153
157
let console_output_layer =
154
158
tracing_subscriber:: fmt:: layer ( ) . with_filter ( env_filter_layer) ;
155
159
layers. push ( console_output_layer. boxed ( ) ) ;
156
160
}
157
161
158
- if self . otlp_log_config . enabled {
162
+ if self . otlp_log_settings . common_settings . enabled {
159
163
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 ,
162
166
)
163
167
// TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
164
168
. add_directive ( "h2=off" . parse ( ) . expect ( "invalid directive" ) ) ;
@@ -183,10 +187,13 @@ impl Tracing {
183
187
self . logger_provider = Some ( otel_log) ;
184
188
}
185
189
186
- if self . otlp_trace_config . enabled {
190
+ if self . otlp_trace_settings . common_settings . enabled {
187
191
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 ,
190
197
)
191
198
// TODO (@NickLarsenNZ): Remove this directive once https://github.com/open-telemetry/opentelemetry-rust/issues/761 is resolved
192
199
. add_directive ( "h2=off" . parse ( ) . expect ( "invalid directive" ) ) ;
@@ -234,12 +241,12 @@ impl Tracing {
234
241
impl Drop for Tracing {
235
242
fn drop ( & mut self ) {
236
243
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,
239
246
"shutting down opentelemetry OTLP providers"
240
247
) ;
241
248
242
- if self . otlp_trace_config . enabled {
249
+ if self . otlp_trace_settings . common_settings . enabled {
243
250
// NOTE (@NickLarsenNZ): This might eventually be replaced with something like SdkMeterProvider::shutdown(&self)
244
251
// as has been done with the LoggerProvider (further below)
245
252
// see: https://github.com/open-telemetry/opentelemetry-rust/pull/1412/files#r1409608679
@@ -318,31 +325,14 @@ impl BuilderState for builder_state::Config {}
318
325
#[ derive( Default ) ]
319
326
pub struct TracingBuilder < S : BuilderState > {
320
327
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 ,
324
331
325
332
/// Allow the generic to be used (needed for impls).
326
333
_marker : std:: marker:: PhantomData < S > ,
327
334
}
328
335
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
-
346
336
impl TracingBuilder < builder_state:: PreServiceName > {
347
337
/// Set the service name used in OTLP exports, and console output.
348
338
///
@@ -361,17 +351,13 @@ impl TracingBuilder<builder_state::Config> {
361
351
/// variable.
362
352
pub fn with_console_output (
363
353
self ,
364
- settings : ConsoleLogSettings ,
354
+ console_log_settings : ConsoleLogSettings ,
365
355
) -> TracingBuilder < builder_state:: Config > {
366
356
TracingBuilder {
367
357
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 ,
375
361
_marker : self . _marker ,
376
362
}
377
363
}
@@ -383,17 +369,13 @@ impl TracingBuilder<builder_state::Config> {
383
369
/// in the opentelemetry crates. See [`Tracing`].
384
370
pub fn with_otlp_log_exporter (
385
371
self ,
386
- settings : OtlpLogSettings ,
372
+ otlp_log_settings : OtlpLogSettings ,
387
373
) -> TracingBuilder < builder_state:: Config > {
388
374
TracingBuilder {
389
375
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 ,
397
379
_marker : self . _marker ,
398
380
}
399
381
}
@@ -405,17 +387,13 @@ impl TracingBuilder<builder_state::Config> {
405
387
/// in the opentelemetry crates. See [`Tracing`].
406
388
pub fn with_otlp_trace_exporter (
407
389
self ,
408
- settings : OtlpTraceSettings ,
390
+ otlp_trace_settings : OtlpTraceSettings ,
409
391
) -> TracingBuilder < builder_state:: Config > {
410
392
TracingBuilder {
411
393
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,
419
397
_marker : self . _marker ,
420
398
}
421
399
}
@@ -429,9 +407,9 @@ impl TracingBuilder<builder_state::Config> {
429
407
service_name : self
430
408
. service_name
431
409
. 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 ,
435
413
logger_provider : None ,
436
414
}
437
415
}
@@ -448,6 +426,7 @@ fn env_filter_builder(env_var: &str, default_directive: impl Into<Directive>) ->
448
426
#[ cfg( test) ]
449
427
mod test {
450
428
use settings:: { Build as _, Settings } ;
429
+ use tracing:: level_filters:: LevelFilter ;
451
430
452
431
use super :: * ;
453
432
@@ -479,15 +458,18 @@ mod test {
479
458
. build ( ) ;
480
459
481
460
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 ( )
487
469
}
488
470
) ;
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) ;
491
473
}
492
474
493
475
#[ test]
@@ -518,27 +500,34 @@ mod test {
518
500
. build ( ) ;
519
501
520
502
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 ( )
526
511
}
527
512
) ;
528
513
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
+ } ,
534
521
}
535
522
) ;
536
523
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
+ }
542
531
}
543
532
) ;
544
533
}
0 commit comments