File tree Expand file tree Collapse file tree
crates/stackable-telemetry/src/tracing Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66//!
77//! To get started, see [`Tracing`].
88
9- use std:: { ops:: Not , path:: PathBuf } ;
9+ use std:: { io :: IsTerminal , ops:: Not , path:: PathBuf } ;
1010
1111use opentelemetry:: trace:: TracerProvider ;
1212use opentelemetry_appender_tracing:: layer:: OpenTelemetryTracingBridge ;
@@ -432,15 +432,21 @@ impl Tracing {
432432
433433 // NOTE (@NickLarsenNZ): There is no elegant way to build the layer depending on formats because the types
434434 // returned from each subscriber "modifier" function is different (sometimes with different generics).
435+ // tracing-subscriber does not auto-detect whether stdout is a terminal
436+ // (https://github.com/tokio-rs/tracing/issues/1160), so we check explicitly.
437+ let use_ansi = std:: io:: stdout ( ) . is_terminal ( ) ;
438+
435439 match log_format {
436440 Format :: Plain => {
437- let console_output_layer =
438- tracing_subscriber:: fmt:: layer ( ) . with_filter ( env_filter_layer) ;
441+ let console_output_layer = tracing_subscriber:: fmt:: layer ( )
442+ . with_ansi ( use_ansi)
443+ . with_filter ( env_filter_layer) ;
439444 layers. push ( console_output_layer. boxed ( ) ) ;
440445 }
441446 Format :: Json => {
442447 let console_output_layer = tracing_subscriber:: fmt:: layer ( )
443448 . json ( )
449+ . with_ansi ( use_ansi)
444450 . with_filter ( env_filter_layer) ;
445451 layers. push ( console_output_layer. boxed ( ) ) ;
446452 }
You can’t perform that action at this time.
0 commit comments