diff --git a/client/tracing/src/logging/event_format.rs b/client/tracing/src/logging/event_format.rs index 25fd2f3ba3d70..5e7a5246cca00 100644 --- a/client/tracing/src/logging/event_format.rs +++ b/client/tracing/src/logging/event_format.rs @@ -43,6 +43,8 @@ pub struct EventFormat { pub display_thread_name: bool, /// Enable ANSI terminal colors for formatted output. pub enable_color: bool, + /// Duplicate INFO, WARN and ERROR messages to stdout. + pub dup_to_stdout: bool, } impl EventFormat @@ -123,7 +125,19 @@ where writer: &mut dyn fmt::Write, event: &Event, ) -> fmt::Result { - self.format_event_custom(CustomFmtContext::FmtContext(ctx), writer, event) + if self.dup_to_stdout && ( + event.metadata().level() == &Level::INFO || + event.metadata().level() == &Level::WARN || + event.metadata().level() == &Level::ERROR + ) { + let mut out = String::new(); + self.format_event_custom(CustomFmtContext::FmtContext(ctx), &mut out, event)?; + writer.write_str(&out)?; + print!("{}", out); + Ok(()) + } else { + self.format_event_custom(CustomFmtContext::FmtContext(ctx), writer, event) + } } } diff --git a/client/tracing/src/logging/mod.rs b/client/tracing/src/logging/mod.rs index 187b6a387f328..1023879e3d7f0 100644 --- a/client/tracing/src/logging/mod.rs +++ b/client/tracing/src/logging/mod.rs @@ -167,6 +167,7 @@ where display_level: !simple, display_thread_name: !simple, enable_color, + dup_to_stdout: !atty::is(atty::Stream::Stderr) && atty::is(atty::Stream::Stdout), }; let builder = FmtSubscriber::builder().with_env_filter(env_filter);