diff --git a/src/taoensso/telemere.cljc b/src/taoensso/telemere.cljc index 6e507ec..abb24c0 100644 --- a/src/taoensso/telemere.cljc +++ b/src/taoensso/telemere.cljc @@ -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) {}) ; For human-readable string output (default) + (utils/format-signal->edn-fn) {}) ; For edn output + (utils/format-signal->json-fn {}) ; 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 diff --git a/src/taoensso/telemere/handlers.cljc b/src/taoensso/telemere/console_handlers.cljc similarity index 79% rename from src/taoensso/telemere/handlers.cljc rename to src/taoensso/telemere/console_handlers.cljc index 5987b4a..e1e7c6a 100644 --- a/src/taoensso/telemere/handlers.cljc +++ b/src/taoensso/telemere/console_handlers.cljc @@ -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) {}) ; For human-readable string output (default) - (utils/format-signal->edn-fn) {}) ; For edn output - (utils/format-signal->json-fn {}) ; 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. ." - ([] (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)) diff --git a/src/taoensso/telemere/handlers/file_handler.clj b/src/taoensso/telemere/file_handler.clj similarity index 98% rename from src/taoensso/telemere/handlers/file_handler.clj rename to src/taoensso/telemere/file_handler.clj index dc1946b..29c8401 100644 --- a/src/taoensso/telemere/handlers/file_handler.clj +++ b/src/taoensso/telemere/file_handler.clj @@ -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 } (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))) diff --git a/test/taoensso/telemere_tests.cljc b/test/taoensso/telemere_tests.cljc index 6d31c93..b5cb6b9 100644 --- a/test/taoensso/telemere_tests.cljc +++ b/test/taoensso/telemere_tests.cljc @@ -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))))]) ;;;;