From d294e51214e9ac814b283cb697d0486f914d080a Mon Sep 17 00:00:00 2001 From: Arkadiy Paronyan Date: Wed, 31 Mar 2021 13:46:14 +0300 Subject: [PATCH] Duplicate logging to stdout (#8495) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Duplicate logging to stdout * Update client/tracing/src/logging/event_format.rs Co-authored-by: Bastian Köcher Co-authored-by: Bastian Köcher --- .../client/tracing/src/logging/event_format.rs | 16 +++++++++++++++- substrate/client/tracing/src/logging/mod.rs | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/substrate/client/tracing/src/logging/event_format.rs b/substrate/client/tracing/src/logging/event_format.rs index 25fd2f3ba3..5e7a5246cc 100644 --- a/substrate/client/tracing/src/logging/event_format.rs +++ b/substrate/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/substrate/client/tracing/src/logging/mod.rs b/substrate/client/tracing/src/logging/mod.rs index 187b6a387f..1023879e3d 100644 --- a/substrate/client/tracing/src/logging/mod.rs +++ b/substrate/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);