@@ -22,53 +22,11 @@ where
22
22
pub subscriber : T ,
23
23
}
24
24
25
- pub fn get_subscriber_with_trace < Sink > (
26
- name : String ,
27
- env_filter : String ,
28
- sink : Sink ,
29
- otlp_url : String ,
30
- ) -> Telemetry < impl SubscriberExt + Send + Sync + ' static >
31
- where
32
- Sink : for < ' a > MakeWriter < ' a > + Send + Sync + ' static ,
33
- {
34
- let formatting_layer: BunyanFormattingLayer < Sink > =
35
- BunyanFormattingLayer :: new ( name. clone ( ) , sink) ;
36
-
37
- let exporter = opentelemetry_otlp:: new_exporter ( )
38
- . tonic ( )
39
- . with_endpoint ( otlp_url. clone ( ) ) ;
40
-
41
- let provider = opentelemetry_otlp:: new_pipeline ( )
42
- . tracing ( )
43
- . with_trace_config (
44
- Config :: default ( ) . with_resource ( opentelemetry_sdk:: Resource :: new ( vec ! [
45
- opentelemetry:: KeyValue :: new( "service.name" , name) ,
46
- ] ) ) ,
47
- )
48
- . with_batch_config ( BatchConfig :: default ( ) )
49
- . with_exporter ( exporter)
50
- . install_batch ( Tokio )
51
- . expect ( "Failed to install tracing pipeline" ) ;
52
-
53
- global:: set_tracer_provider ( provider. clone ( ) ) ;
54
- let tracer = provider. tracer ( "tracing-otel-subscriber" ) ;
55
-
56
- let filter_layer =
57
- EnvFilter :: try_from_default_env ( ) . unwrap_or_else ( |_| EnvFilter :: new ( env_filter) ) ;
58
-
59
- Telemetry {
60
- subscriber : Registry :: default ( )
61
- . with ( filter_layer)
62
- . with ( JsonStorageLayer )
63
- . with ( OpenTelemetryLayer :: new ( tracer) )
64
- . with ( formatting_layer) ,
65
- }
66
- }
67
-
68
25
pub fn get_subscriber < Sink > (
69
26
name : String ,
70
27
env_filter : String ,
71
28
sink : Sink ,
29
+ otlp_url : Option < String > ,
72
30
) -> Telemetry < impl SubscriberExt + Send + Sync + ' static >
73
31
where
74
32
Sink : for < ' a > MakeWriter < ' a > + Send + Sync + ' static ,
@@ -79,11 +37,51 @@ where
79
37
let filter_layer =
80
38
EnvFilter :: try_from_default_env ( ) . unwrap_or_else ( |_| EnvFilter :: new ( env_filter) ) ;
81
39
82
- Telemetry {
83
- subscriber : Registry :: default ( )
84
- . with ( filter_layer)
85
- . with ( JsonStorageLayer )
86
- . with ( formatting_layer) ,
40
+ match otlp_url {
41
+ Some ( otlp_url) => {
42
+ let exporter = opentelemetry_otlp:: new_exporter ( )
43
+ . tonic ( )
44
+ . with_endpoint ( otlp_url. clone ( ) ) ;
45
+
46
+ let provider = opentelemetry_otlp:: new_pipeline ( )
47
+ . tracing ( )
48
+ . with_trace_config ( Config :: default ( ) . with_resource (
49
+ opentelemetry_sdk:: Resource :: new ( vec ! [ opentelemetry:: KeyValue :: new(
50
+ "service.name" ,
51
+ name,
52
+ ) ] ) ,
53
+ ) )
54
+ . with_batch_config ( BatchConfig :: default ( ) )
55
+ . with_exporter ( exporter)
56
+ . install_batch ( Tokio )
57
+ . expect ( "Failed to install tracing pipeline" ) ;
58
+
59
+ global:: set_tracer_provider ( provider. clone ( ) ) ;
60
+ let tracer = provider. tracer ( "tracing-otel-subscriber" ) ;
61
+
62
+ let telemetry: Telemetry < Box < dyn SubscriberExt + Send + Sync > > = Telemetry {
63
+ subscriber : Box :: new (
64
+ Registry :: default ( )
65
+ . with ( OpenTelemetryLayer :: new ( tracer) )
66
+ . with ( filter_layer)
67
+ . with ( JsonStorageLayer )
68
+ . with ( formatting_layer) ,
69
+ ) ,
70
+ } ;
71
+
72
+ telemetry
73
+ }
74
+ None => {
75
+ let telemetry: Telemetry < Box < dyn SubscriberExt + Send + Sync > > = Telemetry {
76
+ subscriber : Box :: new (
77
+ Registry :: default ( )
78
+ . with ( filter_layer)
79
+ . with ( JsonStorageLayer )
80
+ . with ( formatting_layer) ,
81
+ ) ,
82
+ } ;
83
+ telemetry
84
+ }
87
85
}
88
86
}
89
87
0 commit comments