mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-27 21:58:26 +00:00
[nop] Restructure handlers
This commit is contained in:
parent
99b2e0c0cb
commit
323ba0e99c
4 changed files with 51 additions and 58 deletions
|
|
@ -7,12 +7,13 @@
|
|||
{:author "Peter Taoussanis (@ptaoussanis)"}
|
||||
(:refer-clojure :exclude [binding newline])
|
||||
(:require
|
||||
[taoensso.encore :as enc :refer [binding have have?]]
|
||||
[taoensso.encore.signals :as sigs]
|
||||
[taoensso.telemere.impl :as impl]
|
||||
[taoensso.telemere.utils :as utils]
|
||||
[taoensso.telemere.handlers :as handlers]
|
||||
#?(:clj [taoensso.telemere.streams :as streams]))
|
||||
[taoensso.encore :as enc :refer [binding have have?]]
|
||||
[taoensso.encore.signals :as sigs]
|
||||
[taoensso.telemere.impl :as impl]
|
||||
[taoensso.telemere.utils :as utils]
|
||||
[taoensso.telemere.console-handlers :as console-handlers]
|
||||
#?(:clj [taoensso.telemere.file-handler :as file-handler])
|
||||
#?(:clj [taoensso.telemere.streams :as streams]))
|
||||
|
||||
#?(:cljs
|
||||
(:require-macros
|
||||
|
|
@ -369,15 +370,23 @@
|
|||
|
||||
;;;; Handlers
|
||||
|
||||
(enc/def* help:signal-formatters
|
||||
"Common signal formatters include:
|
||||
(utils/format-signal-str->fn) {<opts>}) ; For human-readable string output (default)
|
||||
(utils/format-signal->edn-fn) {<opts>}) ; For edn output
|
||||
(utils/format-signal->json-fn {<opts>}) ; For JSON output
|
||||
|
||||
See relevant docstrings for details."
|
||||
"See docstring")
|
||||
|
||||
(enc/defaliases
|
||||
#?(:default handlers/console-handler)
|
||||
#?(:cljs handlers/raw-console-handler)
|
||||
#?(:clj handlers/file-handler))
|
||||
#?(:default console-handlers/handler:console)
|
||||
#?(:cljs console-handlers/handler:console-raw)
|
||||
#?(:clj file-handler/handler:file))
|
||||
|
||||
(defonce ^:no-doc __add-default-handlers
|
||||
(do
|
||||
(add-handler! :default-console-handler
|
||||
(console-handler))
|
||||
(add-handler! :default/console (handler:console))
|
||||
nil))
|
||||
|
||||
;;;; Flow benchmarks
|
||||
|
|
|
|||
|
|
@ -1,28 +1,15 @@
|
|||
(ns taoensso.telemere.handlers
|
||||
"Built-in Telemere handlers."
|
||||
(ns ^:no-doc taoensso.telemere.console-handlers
|
||||
"Private ns, implementation detail."
|
||||
(:require
|
||||
[taoensso.encore :as enc :refer [have have?]]
|
||||
[taoensso.telemere.utils :as utils]
|
||||
#?(:clj [taoensso.telemere.handlers.file-handler :as file-handler])))
|
||||
[taoensso.telemere.utils :as utils]))
|
||||
|
||||
(comment
|
||||
(require '[taoensso.telemere :as tel])
|
||||
(remove-ns 'taoensso.telemere.handlers)
|
||||
(remove-ns 'taoensso.telemere.console-handlers)
|
||||
(:api (enc/interns-overview)))
|
||||
|
||||
;;;; Console handlers
|
||||
|
||||
(enc/def* help:signal-formatters
|
||||
"Common signal formatters include:
|
||||
(utils/format-signal-str->fn) {<opts>}) ; For human-readable string output (default)
|
||||
(utils/format-signal->edn-fn) {<opts>}) ; For edn output
|
||||
(utils/format-signal->json-fn {<opts>}) ; For JSON output
|
||||
|
||||
See relevant docstrings for details."
|
||||
"See docstring")
|
||||
|
||||
#?(:clj
|
||||
(defn console-handler
|
||||
(defn ^:public handler:console
|
||||
"Experimental, subject to change.
|
||||
|
||||
Returns a (fn handler [signal]) that:
|
||||
|
|
@ -35,7 +22,7 @@
|
|||
`:stream` - `java.io.writer`
|
||||
Defaults to `*err*` if `utils/error-signal?` is true, and `*out*` otherwise."
|
||||
|
||||
([] (console-handler nil))
|
||||
([] (handler:console nil))
|
||||
([{:keys [format-signal-fn stream]
|
||||
:or {format-signal-fn (utils/format-signal->str-fn)}}]
|
||||
|
||||
|
|
@ -43,7 +30,7 @@
|
|||
error-signal? utils/error-signal?
|
||||
nl utils/newline]
|
||||
|
||||
(fn a-console-handler
|
||||
(fn a-handler:console
|
||||
([]) ; Shut down (no-op)
|
||||
([signal]
|
||||
(let [^java.io.Writer stream
|
||||
|
|
@ -53,7 +40,7 @@
|
|||
(.flush stream))))))))
|
||||
|
||||
:cljs
|
||||
(defn console-handler
|
||||
(defn ^:public handler:console
|
||||
"Experimental, subject to change.
|
||||
|
||||
If `js/console` exists, returns a (fn handler [signal]) that:
|
||||
|
|
@ -63,7 +50,7 @@
|
|||
Options:
|
||||
`:format-signal-fn` - (fn [signal]) => output, see `help:signal-formatters`"
|
||||
|
||||
([] (console-handler nil))
|
||||
([] (handler:console nil))
|
||||
([{:keys [format-signal-fn]
|
||||
:or {format-signal-fn (utils/format-signal->str-fn)}}]
|
||||
|
||||
|
|
@ -71,7 +58,7 @@
|
|||
(let [js-console-logger utils/js-console-logger
|
||||
nl utils/newline]
|
||||
|
||||
(fn a-console-handler
|
||||
(fn a-handler:console
|
||||
([]) ; Shut down (no-op)
|
||||
([signal]
|
||||
(when-let [output (format-signal-fn signal)]
|
||||
|
|
@ -88,7 +75,7 @@
|
|||
([x1 x2 x3 & more] (apply logger x1 x2 x3 more)))))
|
||||
|
||||
#?(:cljs
|
||||
(defn raw-console-handler
|
||||
(defn ^:public handler:console-raw
|
||||
"Experimental, subject to change.
|
||||
|
||||
If `js/console` exists, returns a (fn handler [signal]) that:
|
||||
|
|
@ -98,7 +85,7 @@
|
|||
Intended for use with browser formatting tools like `binaryage/devtools`,
|
||||
Ref. <https://github.com/binaryage/cljs-devtools>."
|
||||
|
||||
([] (raw-console-handler nil))
|
||||
([] (handler:console-raw nil))
|
||||
([{:keys [format-signal-prelude-fn format-nsecs-fn] :as opts
|
||||
:or
|
||||
{format-signal-prelude-fn (utils/format-signal-prelude-fn) ; (fn [signal])
|
||||
|
|
@ -113,7 +100,7 @@
|
|||
:format-error-fn nil
|
||||
:raw-error? true})]
|
||||
|
||||
(fn a-raw-console-handler
|
||||
(fn a-handler:console-raw
|
||||
([]) ; Shut down (no-op)
|
||||
([signal]
|
||||
(let [{:keys [level error]} signal
|
||||
|
|
@ -127,7 +114,3 @@
|
|||
(.call logger logger stack))
|
||||
|
||||
(.groupEnd js/console)))))))))
|
||||
|
||||
;;;; File handler
|
||||
|
||||
#?(:clj (enc/defalias file-handler/file-handler))
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
(ns ^:no-doc taoensso.telemere.handlers.file-handler
|
||||
(ns ^:no-doc taoensso.telemere.file-handler
|
||||
"Private ns, implementation detail."
|
||||
(:require
|
||||
[taoensso.encore :as enc :refer [have have?]]
|
||||
[taoensso.telemere.utils :as utils]))
|
||||
|
||||
(comment
|
||||
(remove-ns 'taoensso.telemere.handlers.file-handler)
|
||||
(remove-ns 'taoensso.telemere.file-handler)
|
||||
(:api (enc/interns-overview)))
|
||||
|
||||
;;;; Implementation
|
||||
|
|
@ -263,7 +263,7 @@
|
|||
|
||||
;;;; Handler
|
||||
|
||||
(defn ^:public file-handler
|
||||
(defn ^:public handler:file
|
||||
"Experimental, subject to change.
|
||||
|
||||
Returns a (fn handler [signal]) that:
|
||||
|
|
@ -296,7 +296,7 @@
|
|||
`:max-num-intervals` ∈ #{nil <pos-int>} (default 6)
|
||||
Maximum number of intervals (days/weeks/months) to retain."
|
||||
|
||||
([] (file-handler nil))
|
||||
([] (handler:file nil))
|
||||
([{:keys
|
||||
[format-signal-fn
|
||||
path interval
|
||||
|
|
@ -357,7 +357,7 @@
|
|||
|
||||
lock (Object.)]
|
||||
|
||||
(fn a-file-handler
|
||||
(fn a-handler:file
|
||||
([] (locking lock (fw))) ; Close writer
|
||||
([signal]
|
||||
(when-let [output (format-signal-fn signal)]
|
||||
|
|
@ -392,10 +392,10 @@
|
|||
(.setLastModified (utils/as-file "test/logs/app6.log")
|
||||
(enc/as-udt "1999-01-01T01:00:00.00Z"))
|
||||
|
||||
(let [hf
|
||||
(file-handler
|
||||
(let [hfn
|
||||
(handler:file
|
||||
{:path "test/logs/app6.log"
|
||||
:max-num-intervals 2
|
||||
:max-num-parts 2})]
|
||||
|
||||
(hf {:info :level :msg_ "hello"}) (hf)))
|
||||
(hfn {:info :level :msg_ "hello"}) (hfn)))
|
||||
|
|
@ -8,12 +8,13 @@
|
|||
:refer [signal! with-signal with-signals]
|
||||
:rename {signal! sig!, with-signal with-sig, with-signals with-sigs}]
|
||||
|
||||
[taoensso.telemere.utils :as utils]
|
||||
[taoensso.telemere.timbre-shim :as timbre]
|
||||
[taoensso.telemere.handlers :as handlers]
|
||||
#?(:clj [taoensso.telemere.handlers.file-handler :as fh])
|
||||
[taoensso.telemere.utils :as utils]
|
||||
[taoensso.telemere.timbre-shim :as timbre]
|
||||
#?(:clj [taoensso.telemere.slf4j :as slf4j])
|
||||
#?(:clj [clojure.tools.logging :as ctl])))
|
||||
#?(:clj [clojure.tools.logging :as ctl])
|
||||
|
||||
#?(:default [taoensso.telemere.console-handlers :as ch])
|
||||
#?(:clj [taoensso.telemere.file-handler :as fh])))
|
||||
|
||||
(comment
|
||||
(remove-ns 'taoensso.telemere-tests)
|
||||
|
|
@ -38,7 +39,7 @@
|
|||
(def pstr? (enc/pred string?))
|
||||
(def pnat-int? (enc/pred enc/nat-int?)))
|
||||
|
||||
;; (tel/remove-handler! :default-console-handler)
|
||||
;; (tel/remove-handler! :default/console)
|
||||
(let [sig-handlers_ (atom nil)]
|
||||
(test/use-fixtures :once
|
||||
(enc/test-fixtures
|
||||
|
|
@ -790,9 +791,9 @@
|
|||
|
||||
(deftest _other-handlers
|
||||
;; For now just testing that basic construction succeeds
|
||||
[#?(:default (is (fn? (handlers/console-handler))))
|
||||
#?(:cljs (is (fn? (handlers/raw-console-handler))))
|
||||
#?(:clj (is (fn? (handlers/file-handler))))])
|
||||
[#?(:default (is (fn? (ch/handler:console))))
|
||||
#?(:cljs (is (fn? (ch/handler:console-raw))))
|
||||
#?(:clj (is (fn? (fh/handler:file))))])
|
||||
|
||||
;;;;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue