From 6d3e0196160909c4473d8283ebf660e982194f18 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Wed, 6 Mar 2024 19:02:58 +0100 Subject: [PATCH] [new] Generate relevant internal signals --- src/taoensso/telemere.cljc | 19 +++++++++++----- src/taoensso/telemere/streams.clj | 30 ++++++++++++++++++++----- src/taoensso/telemere/tools_logging.clj | 7 ++++++ 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/taoensso/telemere.cljc b/src/taoensso/telemere.cljc index c44bd35..707c137 100644 --- a/src/taoensso/telemere.cljc +++ b/src/taoensso/telemere.cljc @@ -38,7 +38,7 @@ ;; ;; - Tests for utils (hostname, formatters, etc.)? ;; - Remaining docstrings and TODOs -;; - Document kinds: #{:log :spy :trace :event :error :system/out :system/err } +;; - Kinds: #{:log :spy :trace :event :error :system/out :system/err } ;; - General polish ;; ;; - Reading plan @@ -160,20 +160,22 @@ (enc/set-var-root! sigs/*default-handler-error-fn* (fn [{:keys [error] :as m}] (impl/signal! - {:level :error + {:kind :error + :level :error :error error :location {:ns "taoensso.encore.signals"} :id :taoensso.encore.signals/handler-error - :msg "[encore/signals] Error executing wrapped handler fn" + :msg "Error executing wrapped handler fn" :data (dissoc m :error)}))) (enc/set-var-root! sigs/*default-handler-backp-fn* (fn [data] (impl/signal! - {:level :warn + {:kind :event + :level :warn :location {:ns "taoensso.encore.signals"} :id :taoensso.encore.signals/handler-back-pressure - :msg "[encore/signals] Back pressure on wrapped handler fn" + :msg "Back pressure on wrapped handler fn" :data data})))) ;;;; Common signals @@ -378,6 +380,13 @@ #?(:clj (enc/compile-when (and org.slf4j.Logger com.taoensso.telemere.slf4j.TelemereLogger) + + (impl/signal! + {:kind :event + :level :info + :id :taoensso.telemere/slf4j->telemere! + :msg "Enabling interop: SLF4J -> Telemere"}) + (require '[taoensso.telemere.slf4j :as slf4j]))) (comment (check-interop)) diff --git a/src/taoensso/telemere/streams.clj b/src/taoensso/telemere/streams.clj index 7fc459e..472550e 100644 --- a/src/taoensso/telemere/streams.clj +++ b/src/taoensso/telemere/streams.clj @@ -1,6 +1,6 @@ (ns ^:no-doc taoensso.telemere.streams "Private ns, implementation detail. - Interop support: standard out/err streams -> Telemere." + Interop support: standard stream/s -> Telemere." (:require [taoensso.encore :as enc :refer [have have?]] [taoensso.telemere.impl :as impl])) @@ -83,10 +83,22 @@ Resets `System/out` and `System/err` to their original value (prior to any `streams->telemere!` call)." [] - (locking monitor - (let [reset-out? (when-let [[out] (reset-vals! orig-out_ nil)] (System/setOut out) true) - reset-err? (when-let [[err] (reset-vals! orig-err_ nil)] (System/setErr err) true)] - (or reset-out? reset-err?)))) + (let [[orig-out _] (reset-vals! orig-out_ nil) + [orig-err _] (reset-vals! orig-err_ nil)] + + (impl/signal! + {:kind :event + :level :info + :id :taoensso.telemere/streams->telemere! + :msg "Disabling interop: standard stream/s -> Telemere" + :data {:system/out? (boolean orig-out) + :system/err? (boolean orig-err)}}) + + (locking monitor + (when orig-out (System/setOut orig-out)) + (when orig-err (System/setErr orig-err))) + + (boolean (or orig-out orig-err)))) (defn ^:public streams->telemere! "Experimental, subject to change without notice! @@ -111,6 +123,14 @@ (let [out (when out (telemere-print-stream out)) err (when err (telemere-print-stream err))] + (impl/signal! + {:kind :event + :level :info + :id :taoensso.telemere/streams->telemere! + :msg "Enabling interop: standard stream/s -> Telemere" + :data {:system/out? (boolean out) + :system/err? (boolean err)}}) + (locking monitor (when out (compare-and-set! orig-out_ nil System/out) (System/setOut out)) (when err (compare-and-set! orig-err_ nil System/err) (System/setErr err))) diff --git a/src/taoensso/telemere/tools_logging.clj b/src/taoensso/telemere/tools_logging.clj index 302cce9..92e9ae2 100644 --- a/src/taoensso/telemere/tools_logging.clj +++ b/src/taoensso/telemere/tools_logging.clj @@ -42,6 +42,13 @@ (defn ^:public tools-logging->telemere! "Configures `clojure.tools.logging` to use Telemere as its logging implementation." [] + + (impl/signal! + {:kind :event + :level :info + :id :taoensso.telemere/clojure.tools.logging->telemere! + :msg "Enabling interop: `clojure.tools.logging` -> Telemere"}) + (alter-var-root #'clojure.tools.logging/*logger-factory* (fn [_] (TelemereLoggerFactory.))))