@@ -10,7 +10,8 @@ use opentelemetry_sdk::{
10
10
} ;
11
11
use opentelemetry_semantic_conventions:: { attribute:: SERVICE_VERSION , SCHEMA_URL } ;
12
12
use tracing_opentelemetry:: { MetricsLayer , OpenTelemetryLayer } ;
13
- use tracing_subscriber:: { layer:: SubscriberExt , util:: SubscriberInitExt , EnvFilter } ;
13
+ use tracing_subscriber:: { layer:: SubscriberExt , util:: SubscriberInitExt , EnvFilter , Layer } ;
14
+ use console_subscriber;
14
15
15
16
fn resource ( ) -> Resource {
16
17
Resource :: builder ( )
@@ -92,11 +93,11 @@ fn init_meter_provider() -> SdkMeterProvider {
92
93
93
94
// Initialize tracing-subscriber and return OtelGuard for opentelemetry-related termination processing
94
95
pub fn init_tracing_subscriber ( ) -> OtelGuard {
95
- let tracer_provider = init_tracer_provider ( ) ;
96
- let meter_provider = init_meter_provider ( ) ;
96
+ // let tracer_provider = init_tracer_provider();
97
+ // let meter_provider = init_meter_provider();
97
98
//let logger_provider = init_logger_provider();
98
99
99
- let tracer = tracer_provider. tracer ( "tracing-otel-subscriber" ) ;
100
+ // let tracer = tracer_provider.tracer("tracing-otel-subscriber");
100
101
101
102
// For the OpenTelemetry layer, add a tracing filter to filter events from
102
103
// OpenTelemetry and its dependent crates (opentelemetry-otlp uses crates
@@ -118,15 +119,6 @@ pub fn init_tracing_subscriber() -> OtelGuard {
118
119
// opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge::new(&logger_provider)
119
120
// .with_filter(filter_otel);
120
121
121
- // Create logfmt logger
122
- let logfmt_layer = tracing_logfmt:: builder ( )
123
- . with_span_name ( std:: env:: var ( "RUST_LOG_SPAN_NAME" ) . map_or ( false , |x| x == "1" ) )
124
- . with_span_path ( std:: env:: var ( "RUST_LOG_SPAN_PATH" ) . map_or ( false , |x| x == "1" ) )
125
- . with_target ( std:: env:: var ( "RUST_LOG_TARGET" ) . map_or ( false , |x| x == "1" ) )
126
- . with_location ( std:: env:: var ( "RUST_LOG_LOCATION" ) . map_or ( false , |x| x == "1" ) )
127
- . with_module_path ( std:: env:: var ( "RUST_LOG_MODULE_PATH" ) . map_or ( false , |x| x == "1" ) )
128
- . with_ansi_color ( std:: env:: var ( "RUST_LOG_ANSI_COLOR" ) . map_or ( false , |x| x == "1" ) )
129
- . layer ( ) ;
130
122
131
123
// Create env filter
132
124
let mut env_filter = EnvFilter :: default ( )
@@ -141,35 +133,74 @@ pub fn init_tracing_subscriber() -> OtelGuard {
141
133
}
142
134
}
143
135
144
- tracing_subscriber:: registry ( )
145
- . with ( env_filter)
146
- . with ( OpenTelemetryLayer :: new ( tracer) )
147
- . with ( MetricsLayer :: new ( meter_provider. clone ( ) ) )
148
- //.with(logger)
149
- . with ( logfmt_layer)
150
- . init ( ) ;
136
+ // Check if tokio console is enabled
137
+ let enable_tokio_console = std:: env:: var ( "TOKIO_CONSOLE_ENABLE" ) . map_or ( false , |x| x == "1" ) ;
138
+
139
+ if enable_tokio_console {
140
+ let console_layer = console_subscriber:: ConsoleLayer :: builder ( )
141
+ . with_default_env ( )
142
+ . spawn ( ) ;
143
+
144
+ // Create logfmt logger
145
+ let logfmt_layer = tracing_logfmt:: builder ( )
146
+ . with_span_name ( std:: env:: var ( "RUST_LOG_SPAN_NAME" ) . map_or ( false , |x| x == "1" ) )
147
+ . with_span_path ( std:: env:: var ( "RUST_LOG_SPAN_PATH" ) . map_or ( false , |x| x == "1" ) )
148
+ . with_target ( std:: env:: var ( "RUST_LOG_TARGET" ) . map_or ( false , |x| x == "1" ) )
149
+ . with_location ( std:: env:: var ( "RUST_LOG_LOCATION" ) . map_or ( false , |x| x == "1" ) )
150
+ . with_module_path ( std:: env:: var ( "RUST_LOG_MODULE_PATH" ) . map_or ( false , |x| x == "1" ) )
151
+ . with_ansi_color ( std:: env:: var ( "RUST_LOG_ANSI_COLOR" ) . map_or ( false , |x| x == "1" ) )
152
+ . layer ( )
153
+ . with_filter ( env_filter) ;
154
+
155
+ tracing_subscriber:: registry ( )
156
+ . with ( console_layer)
157
+ //.with(OpenTelemetryLayer::new(tracer))
158
+ //.with(MetricsLayer::new(meter_provider.clone()))
159
+ //.with(logger)
160
+ . with ( logfmt_layer)
161
+ . init ( ) ;
162
+ } else {
163
+ // Create logfmt logger
164
+ let logfmt_layer = tracing_logfmt:: builder ( )
165
+ . with_span_name ( std:: env:: var ( "RUST_LOG_SPAN_NAME" ) . map_or ( false , |x| x == "1" ) )
166
+ . with_span_path ( std:: env:: var ( "RUST_LOG_SPAN_PATH" ) . map_or ( false , |x| x == "1" ) )
167
+ . with_target ( std:: env:: var ( "RUST_LOG_TARGET" ) . map_or ( false , |x| x == "1" ) )
168
+ . with_location ( std:: env:: var ( "RUST_LOG_LOCATION" ) . map_or ( false , |x| x == "1" ) )
169
+ . with_module_path ( std:: env:: var ( "RUST_LOG_MODULE_PATH" ) . map_or ( false , |x| x == "1" ) )
170
+ . with_ansi_color ( std:: env:: var ( "RUST_LOG_ANSI_COLOR" ) . map_or ( false , |x| x == "1" ) )
171
+ . layer ( )
172
+ . with_filter ( env_filter) ;
173
+
174
+ tracing_subscriber:: registry ( )
175
+ . with ( env_filter)
176
+ //.with(OpenTelemetryLayer::new(tracer))
177
+ //.with(MetricsLayer::new(meter_provider.clone()))
178
+ //.with(logger)
179
+ . with ( logfmt_layer)
180
+ . init ( ) ;
181
+ }
151
182
152
183
OtelGuard {
153
- tracer_provider,
154
- meter_provider,
184
+ // tracer_provider,
185
+ // meter_provider,
155
186
//logger_provider,
156
187
}
157
188
}
158
189
159
190
pub struct OtelGuard {
160
- tracer_provider : SdkTracerProvider ,
161
- meter_provider : SdkMeterProvider ,
191
+ // tracer_provider: SdkTracerProvider,
192
+ // meter_provider: SdkMeterProvider,
162
193
//logger_provider: SdkLoggerProvider,
163
194
}
164
195
165
196
impl Drop for OtelGuard {
166
197
fn drop ( & mut self ) {
167
- if let Err ( err) = self . tracer_provider . shutdown ( ) {
168
- eprintln ! ( "{err:?}" ) ;
169
- }
170
- if let Err ( err) = self . meter_provider . shutdown ( ) {
171
- eprintln ! ( "{err:?}" ) ;
172
- }
198
+ // if let Err(err) = self.tracer_provider.shutdown() {
199
+ // eprintln!("{err:?}");
200
+ // }
201
+ // if let Err(err) = self.meter_provider.shutdown() {
202
+ // eprintln!("{err:?}");
203
+ // }
173
204
//if let Err(err) = self.logger_provider.shutdown() {
174
205
// eprintln!("{err:?}");
175
206
//}
0 commit comments