@@ -92,13 +92,17 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
92
92
// Initialize logs and save the logger_provider.
93
93
let logger_provider = init_logs ( ) . unwrap ( ) ;
94
94
95
- // Create a new OpenTelemetryLogBridge using the above LoggerProvider.
95
+ // Create a new OpenTelemetryTracingBridge using the above LoggerProvider.
96
96
let layer = OpenTelemetryTracingBridge :: new ( & logger_provider) ;
97
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.
98
+ // Add a tracing filter to filter events from crates used by opentelemetry-otlp.
99
+ // The filter levels are set as follows:
100
+ // - Allow `info` level and above by default.
101
+ // - Restrict `hyper`, `tonic`, and `reqwest` to `error` level logs only.
102
+ // This ensures events generated from these crates within the OTLP Exporter are not looped back,
103
+ // thus preventing infinite event generation.
104
+ // Note: This will also drop events from these crates used outside the OTLP Exporter.
105
+ // For more details, see: https://github.com/open-telemetry/opentelemetry-rust/issues/761
102
106
let filter = EnvFilter :: new ( "info" )
103
107
. add_directive ( "hyper=error" . parse ( ) . unwrap ( ) )
104
108
. add_directive ( "tonic=error" . parse ( ) . unwrap ( ) )
0 commit comments