From f050521fbd6bc159ff2dff7d74556259563287fc Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Sat, 11 May 2024 16:12:34 +0200 Subject: [PATCH] [new] `handler:console`: don't cache `:*out*`/`:*err*` stream Support case where `*out*` or `*err*` are being modified after handler is created. --- src/taoensso/telemere/consoles.cljc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/taoensso/telemere/consoles.cljc b/src/taoensso/telemere/consoles.cljc index 481aaa1..e895cc6 100644 --- a/src/taoensso/telemere/consoles.cljc +++ b/src/taoensso/telemere/consoles.cljc @@ -27,17 +27,23 @@ Defaults to `*err*` if `utils/error-signal?` is true, and `*out*` otherwise." ([] (handler:console nil)) - ([{:keys [output-fn stream] - :or {output-fn (utils/format-signal-fn)}}] + ([{:keys [stream output-fn ] + :or + {stream :auto + output-fn (utils/format-signal-fn)}}] - (let [stream (case stream :*out* *out*, :*err* *err* stream) - error-signal? utils/error-signal?] + (let [error-signal? utils/error-signal?] (fn a-handler:console ([]) ; Shut down (no-op) ([signal] (let [^java.io.Writer stream - (or stream (if (error-signal? signal) *err* *out*))] + (case stream + :*out* *out* + :*err* *err* + :auto (if (error-signal? signal) *err* *out*) + stream)] + (when-let [output (output-fn signal)] (.write stream (str output)) (.flush stream))))))))