mirror of
https://github.com/taoensso/telemere.git
synced 2026-02-05 03:43:13 +00:00
[mod] Rename "interop" -> "intake"
This commit is contained in:
parent
e84ef6ba35
commit
5690bfe11a
6 changed files with 54 additions and 49 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ^:no-doc taoensso.telemere.slf4j
|
(ns ^:no-doc taoensso.telemere.slf4j
|
||||||
"Private ns, implementation detail.
|
"Private ns, implementation detail.
|
||||||
Interop support: SLF4J -> Telemere.
|
Intake support: SLF4J -> Telemere.
|
||||||
|
|
||||||
To use Telemere as your SLF4J backend/provider, just include the
|
To use Telemere as your SLF4J backend/provider, just include the
|
||||||
`com.taoensso/slf4j-telemere` dependency on your classpath.
|
`com.taoensso/slf4j-telemere` dependency on your classpath.
|
||||||
|
|
@ -93,7 +93,7 @@
|
||||||
(marker-names cm)
|
(marker-names cm)
|
||||||
(marker-names ms))))
|
(marker-names ms))))
|
||||||
|
|
||||||
;;;; Interop fns (called by `TelemereLogger`)
|
;;;; Intake fns (called by `TelemereLogger`)
|
||||||
|
|
||||||
(defn allowed?
|
(defn allowed?
|
||||||
"Private, don't use.
|
"Private, don't use.
|
||||||
|
|
@ -172,14 +172,14 @@
|
||||||
(org.slf4j.MDC/getCopyOfContextMap)
|
(org.slf4j.MDC/getCopyOfContextMap)
|
||||||
(org.slf4j.MDC/clear)))
|
(org.slf4j.MDC/clear)))
|
||||||
|
|
||||||
(impl/add-interop-check! :slf4j
|
(impl/add-intake-check! :slf4j
|
||||||
(fn []
|
(fn []
|
||||||
(let [^org.slf4j.Logger sl
|
(let [^org.slf4j.Logger sl
|
||||||
(org.slf4j.LoggerFactory/getLogger "InteropTestTelemereLogger")
|
(org.slf4j.LoggerFactory/getLogger "IntakeTestTelemereLogger")
|
||||||
sending? (instance? com.taoensso.telemere.slf4j.TelemereLogger sl)
|
sending? (instance? com.taoensso.telemere.slf4j.TelemereLogger sl)
|
||||||
receiving?
|
receiving?
|
||||||
(and sending?
|
(and sending?
|
||||||
(impl/test-interop! "SLF4J -> Telemere" #(.info sl %)))]
|
(impl/test-intake! "SLF4J -> Telemere" #(.info sl %)))]
|
||||||
|
|
||||||
{:present? true
|
{:present? true
|
||||||
:sending->telemere? sending?
|
:sending->telemere? sending?
|
||||||
|
|
|
||||||
|
|
@ -345,11 +345,11 @@
|
||||||
(handler thread throwable))))
|
(handler thread throwable))))
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
;;;; Interop
|
;;;; Intake
|
||||||
|
|
||||||
(enc/defaliases impl/check-interop)
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(enc/defaliases
|
(enc/defaliases
|
||||||
|
impl/check-intakes
|
||||||
streams/with-out->telemere
|
streams/with-out->telemere
|
||||||
streams/with-err->telemere
|
streams/with-err->telemere
|
||||||
streams/with-streams->telemere
|
streams/with-streams->telemere
|
||||||
|
|
@ -371,11 +371,11 @@
|
||||||
{:kind :event
|
{:kind :event
|
||||||
:level :info
|
:level :info
|
||||||
:id :taoensso.telemere/slf4j->telemere!
|
:id :taoensso.telemere/slf4j->telemere!
|
||||||
:msg "Enabling interop: SLF4J -> Telemere"})
|
:msg "Enabling intake: SLF4J -> Telemere"})
|
||||||
|
|
||||||
(require '[taoensso.telemere.slf4j :as slf4j])))
|
(require '[taoensso.telemere.slf4j :as slf4j])))
|
||||||
|
|
||||||
(comment (check-interop))
|
(comment (check-intakes))
|
||||||
|
|
||||||
;;;; Handlers
|
;;;; Handlers
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -671,7 +671,7 @@
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(defmacro signal-allowed?
|
(defmacro signal-allowed?
|
||||||
"Used only for interop (SLF4J, `clojure.tools.logging`, etc.)."
|
"Used only for intake (SLF4J, `clojure.tools.logging`, etc.)."
|
||||||
{:arglists (signal-arglists :signal!)}
|
{:arglists (signal-arglists :signal!)}
|
||||||
[opts]
|
[opts]
|
||||||
(let [{:keys [#_expansion-id #_location elide? allow?]}
|
(let [{:keys [#_expansion-id #_location elide? allow?]}
|
||||||
|
|
@ -685,30 +685,35 @@
|
||||||
|
|
||||||
(and (not elide?) allow?))))
|
(and (not elide?) allow?))))
|
||||||
|
|
||||||
;;;; Interop
|
;;;; Intake
|
||||||
|
|
||||||
(enc/defonce ^:private interop-checks_ "{<id> (fn check [])}" (atom nil))
|
|
||||||
(defn add-interop-check! [id check-fn] (swap! interop-checks_ assoc id check-fn))
|
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(when (nil? @interop-checks_)
|
(do
|
||||||
(add-interop-check! :tools-logging (fn [] {:present? (enc/have-resource? "clojure/tools/logging.clj")}))
|
(enc/defonce ^:private intake-checks_
|
||||||
(add-interop-check! :slf4j (fn [] {:present? (enc/compile-when org.slf4j.Logger true false)}))))
|
"{<source-id> (fn check [])}"
|
||||||
|
(atom
|
||||||
|
{:tools-logging (fn [] {:present? (enc/have-resource? "clojure/tools/logging.clj")})
|
||||||
|
:slf4j (fn [] {:present? (enc/compile-when org.slf4j.Logger true false)})}))
|
||||||
|
|
||||||
(defn ^:public check-interop
|
(defn add-intake-check! [source-id check-fn] (swap! intake-checks_ assoc source-id check-fn))
|
||||||
"Experimental, subject to change.
|
|
||||||
Runs Telemere's registered interop checks and returns
|
(defn ^:public check-intakes
|
||||||
{<interop-id> {:keys [sending->telemere? telemere-receiving? ...]}}.
|
"Experimental, subject to change.
|
||||||
|
Runs Telemere's registered intake checks and returns
|
||||||
|
{<source-id> {:keys [sending->telemere? telemere-receiving? ...]}}.
|
||||||
|
|
||||||
|
Useful for tests/debugging."
|
||||||
|
[]
|
||||||
|
(enc/map-vals (fn [check-fn] (check-fn))
|
||||||
|
@intake-checks_))
|
||||||
|
|
||||||
|
(defn test-intake! [msg test-fn]
|
||||||
|
(let [msg (str "Intake test: " msg " (" (enc/uuid-str) ")")
|
||||||
|
signal
|
||||||
|
(binding [*rt-sig-filter* nil] ; Without runtime filters
|
||||||
|
(with-signal :raw :trap (test-fn msg)))]
|
||||||
|
|
||||||
|
(= (force (get signal :msg_)) msg)))))
|
||||||
|
|
||||||
Useful for tests/debugging."
|
|
||||||
[]
|
|
||||||
(enc/map-vals (fn [check-fn] (check-fn))
|
|
||||||
@interop-checks_))
|
|
||||||
|
|
||||||
(defn test-interop! [msg test-fn]
|
|
||||||
(let [msg (str "Interop test: " msg " (" (enc/uuid-str) ")")
|
|
||||||
signal
|
|
||||||
(binding [*rt-sig-filter* nil] ; Without runtime filters
|
|
||||||
(with-signal :raw :trap (test-fn msg)))]
|
|
||||||
|
|
||||||
(= (force (get signal :msg_)) msg)))
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ^:no-doc taoensso.telemere.streams
|
(ns ^:no-doc taoensso.telemere.streams
|
||||||
"Private ns, implementation detail.
|
"Private ns, implementation detail.
|
||||||
Interop support: standard stream/s -> Telemere."
|
Intake support: standard stream/s -> Telemere."
|
||||||
(:refer-clojure :exclude [binding])
|
(:refer-clojure :exclude [binding])
|
||||||
(:require
|
(:require
|
||||||
[taoensso.encore :as enc :refer [binding have have?]]
|
[taoensso.encore :as enc :refer [binding have have?]]
|
||||||
|
|
@ -91,7 +91,7 @@
|
||||||
{:kind :event
|
{:kind :event
|
||||||
:level :info
|
:level :info
|
||||||
:id :taoensso.telemere/streams->telemere!
|
:id :taoensso.telemere/streams->telemere!
|
||||||
:msg "Disabling interop: standard stream/s -> Telemere"
|
:msg "Disabling intake: standard stream/s -> Telemere"
|
||||||
:data {:system/out? (boolean orig-out)
|
:data {:system/out? (boolean orig-out)
|
||||||
:system/err? (boolean orig-err)}})
|
:system/err? (boolean orig-err)}})
|
||||||
|
|
||||||
|
|
@ -128,7 +128,7 @@
|
||||||
{:kind :event
|
{:kind :event
|
||||||
:level :info
|
:level :info
|
||||||
:id :taoensso.telemere/streams->telemere!
|
:id :taoensso.telemere/streams->telemere!
|
||||||
:msg "Enabling interop: standard stream/s -> Telemere"
|
:msg "Enabling intake: standard stream/s -> Telemere"
|
||||||
:data {:system/out? (boolean out)
|
:data {:system/out? (boolean out)
|
||||||
:system/err? (boolean err)}})
|
:system/err? (boolean err)}})
|
||||||
|
|
||||||
|
|
@ -143,14 +143,14 @@
|
||||||
(streams->telemere! {})
|
(streams->telemere! {})
|
||||||
(streams->reset!))
|
(streams->reset!))
|
||||||
|
|
||||||
(impl/add-interop-check! :system/out
|
(impl/add-intake-check! :system/out
|
||||||
(fn []
|
(fn []
|
||||||
(let [sending? (boolean @orig-out_)
|
(let [sending? (boolean @orig-out_)
|
||||||
receiving? (and sending? (impl/test-interop! "`System/out` -> Telemere" #(.println System/out %)))]
|
receiving? (and sending? (impl/test-intake! "`System/out` -> Telemere" #(.println System/out %)))]
|
||||||
{:sending->telemere? sending?, :telemere-receiving? receiving?})))
|
{:sending->telemere? sending?, :telemere-receiving? receiving?})))
|
||||||
|
|
||||||
(impl/add-interop-check! :system/err
|
(impl/add-intake-check! :system/err
|
||||||
(fn []
|
(fn []
|
||||||
(let [sending? (boolean @orig-err_)
|
(let [sending? (boolean @orig-err_)
|
||||||
receiving? (and sending? (impl/test-interop! "`System/err` -> Telemere" #(.println System/err %)))]
|
receiving? (and sending? (impl/test-intake! "`System/err` -> Telemere" #(.println System/err %)))]
|
||||||
{:sending->telemere? sending?, :telemere-receiving? receiving?})))
|
{:sending->telemere? sending?, :telemere-receiving? receiving?})))
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
(ns ^:no-doc taoensso.telemere.tools-logging
|
(ns ^:no-doc taoensso.telemere.tools-logging
|
||||||
"Private ns, implementation detail.
|
"Private ns, implementation detail.
|
||||||
Interop support: `clojure.tools.logging` -> Telemere."
|
Intake support: `clojure.tools.logging` -> Telemere."
|
||||||
(:require
|
(:require
|
||||||
[taoensso.encore :as enc :refer [have have?]]
|
[taoensso.encore :as enc :refer [have have?]]
|
||||||
[taoensso.telemere.impl :as impl]
|
[taoensso.telemere.impl :as impl]
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
{:kind :event
|
{:kind :event
|
||||||
:level :info
|
:level :info
|
||||||
:id :taoensso.telemere/clojure.tools.logging->telemere!
|
:id :taoensso.telemere/clojure.tools.logging->telemere!
|
||||||
:msg "Enabling interop: `clojure.tools.logging` -> Telemere"})
|
:msg "Enabling intake: `clojure.tools.logging` -> Telemere"})
|
||||||
|
|
||||||
(alter-var-root #'clojure.tools.logging/*logger-factory*
|
(alter-var-root #'clojure.tools.logging/*logger-factory*
|
||||||
(fn [_] (TelemereLoggerFactory.))))
|
(fn [_] (TelemereLoggerFactory.))))
|
||||||
|
|
@ -59,12 +59,12 @@
|
||||||
(when-let [lf clojure.tools.logging/*logger-factory*]
|
(when-let [lf clojure.tools.logging/*logger-factory*]
|
||||||
(instance? TelemereLoggerFactory lf)))
|
(instance? TelemereLoggerFactory lf)))
|
||||||
|
|
||||||
(impl/add-interop-check! :tools-logging
|
(impl/add-intake-check! :tools-logging
|
||||||
(fn []
|
(fn []
|
||||||
(let [sending? (tools-logging->telemere?)
|
(let [sending? (tools-logging->telemere?)
|
||||||
receiving?
|
receiving?
|
||||||
(and sending?
|
(and sending?
|
||||||
(impl/test-interop! "`clojure.tools.logging` -> Telemere"
|
(impl/test-intake! "`clojure.tools.logging` -> Telemere"
|
||||||
#(clojure.tools.logging/info %)))]
|
#(clojure.tools.logging/info %)))]
|
||||||
|
|
||||||
{:present? true
|
{:present? true
|
||||||
|
|
|
||||||
|
|
@ -533,35 +533,35 @@
|
||||||
;;
|
;;
|
||||||
(do (enc/set-var-root! impl/*sig-handlers* nil) :unset-handler)])))])
|
(do (enc/set-var-root! impl/*sig-handlers* nil) :unset-handler)])))])
|
||||||
|
|
||||||
;;;; Interop
|
;;;; Intake
|
||||||
|
|
||||||
(comment (def ^org.slf4j.Logger sl (org.slf4j.LoggerFactory/getLogger "MyTelemereSLF4JLogger")))
|
(comment (def ^org.slf4j.Logger sl (org.slf4j.LoggerFactory/getLogger "MyTelemereSLF4JLogger")))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(deftest _interop
|
(deftest _intake
|
||||||
[(testing "`clojure.tools.logging` -> Telemere"
|
[(testing "`clojure.tools.logging` -> Telemere"
|
||||||
[(is (sm? (tel/check-interop) {:tools-logging {:present? true, :sending->telemere? true, :telemere-receiving? true}}))
|
[(is (sm? (tel/check-intakes) {:tools-logging {:present? true, :sending->telemere? true, :telemere-receiving? true}}))
|
||||||
(is (sm? (with-sig (ctl/info "Hello" "x" "y")) {:level :info, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/tools-logging, :msg_ "Hello x y"}))
|
(is (sm? (with-sig (ctl/info "Hello" "x" "y")) {:level :info, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/tools-logging, :msg_ "Hello x y"}))
|
||||||
(is (sm? (with-sig (ctl/warn "Hello" "x" "y")) {:level :warn, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/tools-logging, :msg_ "Hello x y"}))
|
(is (sm? (with-sig (ctl/warn "Hello" "x" "y")) {:level :warn, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/tools-logging, :msg_ "Hello x y"}))
|
||||||
(is (sm? (with-sig (ctl/error ex1 "An error")) {:level :error, :error pex1?}) "Errors")])
|
(is (sm? (with-sig (ctl/error ex1 "An error")) {:level :error, :error pex1?}) "Errors")])
|
||||||
|
|
||||||
(testing "Standard out/err streams -> Telemere"
|
(testing "Standard out/err streams -> Telemere"
|
||||||
[(is (sm? (tel/check-interop) {:system/out {:sending->telemere? false, :telemere-receiving? false},
|
[(is (sm? (tel/check-intakes) {:system/out {:sending->telemere? false, :telemere-receiving? false},
|
||||||
:system/err {:sending->telemere? false, :telemere-receiving? false}}))
|
:system/err {:sending->telemere? false, :telemere-receiving? false}}))
|
||||||
|
|
||||||
(is (true? (tel/streams->telemere!)))
|
(is (true? (tel/streams->telemere!)))
|
||||||
(is (sm? (tel/check-interop) {:system/out {:sending->telemere? true, :telemere-receiving? true},
|
(is (sm? (tel/check-intakes) {:system/out {:sending->telemere? true, :telemere-receiving? true},
|
||||||
:system/err {:sending->telemere? true, :telemere-receiving? true}}))
|
:system/err {:sending->telemere? true, :telemere-receiving? true}}))
|
||||||
|
|
||||||
(is (true? (tel/streams->reset!)))
|
(is (true? (tel/streams->reset!)))
|
||||||
(is (sm? (tel/check-interop) {:system/out {:sending->telemere? false, :telemere-receiving? false},
|
(is (sm? (tel/check-intakes) {:system/out {:sending->telemere? false, :telemere-receiving? false},
|
||||||
:system/err {:sending->telemere? false, :telemere-receiving? false}}))
|
:system/err {:sending->telemere? false, :telemere-receiving? false}}))
|
||||||
|
|
||||||
(is (sm? (with-sig (tel/with-out->telemere (println "Hello" "x" "y")))
|
(is (sm? (with-sig (tel/with-out->telemere (println "Hello" "x" "y")))
|
||||||
{:level :info, :location nil, :ns nil, :kind :system/out, :msg_ "Hello x y"}))])
|
{:level :info, :location nil, :ns nil, :kind :system/out, :msg_ "Hello x y"}))])
|
||||||
|
|
||||||
(testing "SLF4J -> Telemere"
|
(testing "SLF4J -> Telemere"
|
||||||
[(is (sm? (tel/check-interop) {:slf4j {:present? true, :sending->telemere? true, :telemere-receiving? true}}))
|
[(is (sm? (tel/check-intakes) {:slf4j {:present? true, :sending->telemere? true, :telemere-receiving? true}}))
|
||||||
(let [^org.slf4j.Logger sl (org.slf4j.LoggerFactory/getLogger "MyTelemereSLF4JLogger")]
|
(let [^org.slf4j.Logger sl (org.slf4j.LoggerFactory/getLogger "MyTelemereSLF4JLogger")]
|
||||||
[(testing "Basics"
|
[(testing "Basics"
|
||||||
[(is (sm? (with-sig (.info sl "Hello")) {:level :info, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/slf4j, :msg_ "Hello"}) "Legacy API: info basics")
|
[(is (sm? (with-sig (.info sl "Hello")) {:level :info, :location nil, :ns nil, :kind :log, :id :taoensso.telemere/slf4j, :msg_ "Hello"}) "Legacy API: info basics")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue