From c725c8ac36c731cbcbefeacf63bb03a90d0706c7 Mon Sep 17 00:00:00 2001 From: Bryan Garza <1396101+bryangarza@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:21:13 +0000 Subject: [PATCH] subscriber: if error occurs when formatting event, print to stderr When `Format_event::format_event(...)` returns an error, we are currently silently dropping that Event. https://github.com/tokio-rs/valuable/issues/88 explains one such case in which this was encountered (due to a bug in valuable-serde). We want to be made aware whenever an Event is dropped. This patch adds a single `eprintln` line to let the user know that we were unable to format a specific event. We are not emitting an actual tracing Event, to avoid the risk of a cycle (the new Event could trigger the same formatting error again). Resolves #1965. --- tracing-subscriber/src/fmt/fmt_layer.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tracing-subscriber/src/fmt/fmt_layer.rs b/tracing-subscriber/src/fmt/fmt_layer.rs index 5e94fd0c71..df546b078f 100644 --- a/tracing-subscriber/src/fmt/fmt_layer.rs +++ b/tracing-subscriber/src/fmt/fmt_layer.rs @@ -896,6 +896,8 @@ where { let mut writer = self.make_writer.make_writer_for(event.metadata()); let _ = io::Write::write_all(&mut writer, buf.as_bytes()); + } else { + eprintln!("[tracing-subscriber] Unable to format the following event: {:?}", event); } buf.clear();