mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-30 06:48:24 +00:00
[new] Generate relevant internal signals
This commit is contained in:
parent
1440a764c9
commit
6d3e019616
3 changed files with 46 additions and 10 deletions
|
|
@ -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 <user>}
|
||||
;; - Kinds: #{:log :spy :trace :event :error :system/out :system/err <user>}
|
||||
;; - 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))
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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.))))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue