1
- use log:: { info, Level } ;
2
1
use once_cell:: sync:: Lazy ;
3
2
use opentelemetry:: global;
4
3
use opentelemetry:: logs:: LogError ;
@@ -8,11 +7,14 @@ use opentelemetry::{
8
7
trace:: { TraceContextExt , Tracer } ,
9
8
Key , KeyValue ,
10
9
} ;
11
- use opentelemetry_appender_log :: OpenTelemetryLogBridge ;
10
+ use opentelemetry_appender_tracing :: layer :: OpenTelemetryTracingBridge ;
12
11
use opentelemetry_otlp:: { ExportConfig , WithExportConfig } ;
13
12
use opentelemetry_sdk:: logs:: Config ;
14
13
use opentelemetry_sdk:: { runtime, trace as sdktrace, Resource } ;
15
14
use std:: error:: Error ;
15
+ use tracing:: info;
16
+ use tracing_subscriber:: prelude:: * ;
17
+ use tracing_subscriber:: EnvFilter ;
16
18
17
19
static RESOURCE : Lazy < Resource > = Lazy :: new ( || {
18
20
Resource :: new ( vec ! [ KeyValue :: new(
@@ -91,9 +93,21 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
91
93
let logger_provider = init_logs ( ) . unwrap ( ) ;
92
94
93
95
// Create a new OpenTelemetryLogBridge using the above LoggerProvider.
94
- let otel_log_appender = OpenTelemetryLogBridge :: new ( & logger_provider) ;
95
- log:: set_boxed_logger ( Box :: new ( otel_log_appender) ) . unwrap ( ) ;
96
- log:: set_max_level ( Level :: Info . to_level_filter ( ) ) ;
96
+ let layer = OpenTelemetryTracingBridge :: new ( & logger_provider) ;
97
+
98
+ // add a tracing filter to filter the events generated from the crates used by opentelemetry-otlp
99
+ // Below filter level means:
100
+ // - Logs at `info` level and above are allowed by default.
101
+ // - Only `error` level logs from `hyper`, `tonic`, and `reqwest` crates are allowed.
102
+ let filter = EnvFilter :: new ( "info" )
103
+ . add_directive ( "hyper=error" . parse ( ) . unwrap ( ) )
104
+ . add_directive ( "tonic=error" . parse ( ) . unwrap ( ) )
105
+ . add_directive ( "reqwest=error" . parse ( ) . unwrap ( ) ) ;
106
+
107
+ tracing_subscriber:: registry ( )
108
+ . with ( filter)
109
+ . with ( layer)
110
+ . init ( ) ;
97
111
98
112
let common_scope_attributes = vec ! [ KeyValue :: new( "scope-key" , "scope-value" ) ] ;
99
113
let tracer = global:: tracer_provider ( )
0 commit comments