mirror of
https://github.com/taoensso/telemere.git
synced 2026-01-01 15:28:25 +00:00
[new] Add :end-with-newline opt to signal formatters
Instead allow format-signal-fn to decide whether or not to end with a newline
This commit is contained in:
parent
49b6da2cf2
commit
c5333faa03
4 changed files with 43 additions and 22 deletions
|
|
@ -42,7 +42,7 @@
|
||||||
(let [^java.io.Writer stream
|
(let [^java.io.Writer stream
|
||||||
(or stream (if (error-signal? signal) *err* *out*))]
|
(or stream (if (error-signal? signal) *err* *out*))]
|
||||||
(when-let [output (format-signal-fn signal)]
|
(when-let [output (format-signal-fn signal)]
|
||||||
(.write stream (str output nl))
|
(.write stream (str output))
|
||||||
(.flush stream))))))))
|
(.flush stream))))))))
|
||||||
|
|
||||||
:cljs
|
:cljs
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
([signal]
|
([signal]
|
||||||
(when-let [output (format-signal-fn signal)]
|
(when-let [output (format-signal-fn signal)]
|
||||||
(let [logger (js-console-logger (get signal :level))]
|
(let [logger (js-console-logger (get signal :level))]
|
||||||
(.call logger logger (str output nl)))))))))))
|
(.call logger logger (str output)))))))))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn- logger-fn [logger]
|
(defn- logger-fn [logger]
|
||||||
|
|
|
||||||
|
|
@ -363,8 +363,7 @@
|
||||||
([] (locking lock (fw))) ; Close writer
|
([] (locking lock (fw))) ; Close writer
|
||||||
([signal]
|
([signal]
|
||||||
(when-let [output (format-signal-fn signal)]
|
(when-let [output (format-signal-fn signal)]
|
||||||
(let [output-str (str output utils/newline)
|
(let [new-interval? (when interval (new-interval!?))
|
||||||
new-interval? (when interval (new-interval!?))
|
|
||||||
>max-file-size? (when max-file-size (>max-file-size?))
|
>max-file-size? (when max-file-size (>max-file-size?))
|
||||||
reset-stream? (or new-interval? >max-file-size?)]
|
reset-stream? (or new-interval? >max-file-size?)]
|
||||||
|
|
||||||
|
|
@ -387,7 +386,7 @@
|
||||||
max-num-parts gzip-archives? nil)))
|
max-num-parts gzip-archives? nil)))
|
||||||
|
|
||||||
(when reset-stream? (fw :writer/reset!))
|
(when reset-stream? (fw :writer/reset!))
|
||||||
(do (fw output-str))))))))))
|
(do (fw output))))))))))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(manage-test-files! :create)
|
(manage-test-files! :create)
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
([] (sw)) ; Shut down
|
([] (sw)) ; Shut down
|
||||||
([signal]
|
([signal]
|
||||||
(when-let [output (format-signal-fn signal)]
|
(when-let [output (format-signal-fn signal)]
|
||||||
(sw (str output utils/newline))))))))
|
(sw output)))))))
|
||||||
|
|
||||||
(defn handler:udp-socket
|
(defn handler:udp-socket
|
||||||
"Experimental, subject to change. Feedback welcome!
|
"Experimental, subject to change. Feedback welcome!
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
([] (.close socket)) ; Shut down
|
([] (.close socket)) ; Shut down
|
||||||
([signal]
|
([signal]
|
||||||
(when-let [output (format-signal-fn signal)]
|
(when-let [output (format-signal-fn signal)]
|
||||||
(let [ba (enc/str->utf8-ba (str output utils/newline))
|
(let [ba (enc/str->utf8-ba (str output))
|
||||||
ba-len (alength ba)
|
ba-len (alength ba)
|
||||||
packet (DatagramPacket. ba (min ba-len max-packet-bytes))]
|
packet (DatagramPacket. ba (min ba-len max-packet-bytes))]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -545,14 +545,20 @@
|
||||||
- Takes a Telemere signal.
|
- Takes a Telemere signal.
|
||||||
- Returns edn string of the (minified) signal."
|
- Returns edn string of the (minified) signal."
|
||||||
([] (format-signal->edn-fn nil))
|
([] (format-signal->edn-fn nil))
|
||||||
([{:keys [pr-edn-fn prep-fn]
|
([{:keys [pr-edn-fn prep-fn end-with-newline?]
|
||||||
:or
|
:or
|
||||||
{pr-edn-fn pr-edn
|
{pr-edn-fn pr-edn
|
||||||
prep-fn (comp error-in-signal->maps minify-signal)}}]
|
prep-fn (comp error-in-signal->maps minify-signal)
|
||||||
|
end-with-newline? true}}]
|
||||||
|
|
||||||
(fn format-signal->edn [signal]
|
(let [nl newline]
|
||||||
(let [signal* (if prep-fn (prep-fn signal) signal)]
|
(fn format-signal->edn [signal]
|
||||||
(pr-edn-fn signal*)))))
|
(let [signal* (if prep-fn (prep-fn signal) signal)
|
||||||
|
output (pr-edn-fn signal*)]
|
||||||
|
|
||||||
|
(if end-with-newline?
|
||||||
|
(str output nl)
|
||||||
|
(do output)))))))
|
||||||
|
|
||||||
(comment ((format-signal->edn-fn) {:level :info, :msg "msg"}))
|
(comment ((format-signal->edn-fn) {:level :info, :msg "msg"}))
|
||||||
|
|
||||||
|
|
@ -562,20 +568,31 @@
|
||||||
- Takes a Telemere signal.
|
- Takes a Telemere signal.
|
||||||
- Returns JSON string of the (minified) signal.
|
- Returns JSON string of the (minified) signal.
|
||||||
|
|
||||||
(Clj only): An appropriate `:pr-json-fn` MUST be provided."
|
(Clj only): An appropriate `:pr-json-fn` MUST be provided.
|
||||||
|
jsonista is one good option, Ref. <https://github.com/metosin/jsonista>:
|
||||||
|
|
||||||
|
(require '[jsonista.core :as jsonista])
|
||||||
|
(format-signal->json-fn {:pr-json-fn jsonista/write-value-as-string ...})"
|
||||||
|
|
||||||
([] (format-signal->json-fn nil))
|
([] (format-signal->json-fn nil))
|
||||||
([{:keys [pr-json-fn prep-fn]
|
([{:keys [pr-json-fn prep-fn end-with-newline?]
|
||||||
:or
|
:or
|
||||||
{#?@(:cljs [pr-json-fn pr-json])
|
{#?@(:cljs [pr-json-fn pr-json])
|
||||||
prep-fn (comp error-in-signal->maps minify-signal)}}]
|
prep-fn (comp error-in-signal->maps minify-signal)
|
||||||
|
end-with-newline? true}}]
|
||||||
|
|
||||||
(when-not pr-json-fn
|
(when-not pr-json-fn
|
||||||
(throw
|
(throw
|
||||||
(ex-info (str "No `" `format-signal->json-fn "` `:pr-json-fn` was provided") {})))
|
(ex-info (str "No `" `format-signal->json-fn "` `:pr-json-fn` was provided") {})))
|
||||||
|
|
||||||
(fn format-signal->json [signal]
|
(let [nl newline]
|
||||||
(let [signal* (if prep-fn (prep-fn signal) signal)]
|
(fn format-signal->json [signal]
|
||||||
(pr-json-fn signal*)))))
|
(let [signal* (if prep-fn (prep-fn signal) signal)
|
||||||
|
output (pr-json-fn signal*)]
|
||||||
|
|
||||||
|
(if end-with-newline?
|
||||||
|
(str output nl)
|
||||||
|
(do output)))))))
|
||||||
|
|
||||||
(comment ((format-signal->json-fn) {:level :info, :msg "msg"}))
|
(comment ((format-signal->json-fn) {:level :info, :msg "msg"}))
|
||||||
|
|
||||||
|
|
@ -585,15 +602,19 @@
|
||||||
- Takes a Telemere signal.
|
- Takes a Telemere signal.
|
||||||
- Returns a formatted string intended for text consoles, etc."
|
- Returns a formatted string intended for text consoles, etc."
|
||||||
([] (format-signal->str-fn nil))
|
([] (format-signal->str-fn nil))
|
||||||
([{:keys [format-signal->prelude-fn
|
([{:keys
|
||||||
format-nsecs-fn format-error-fn]
|
[format-signal->prelude-fn
|
||||||
|
format-nsecs-fn format-error-fn
|
||||||
|
end-with-newline?]
|
||||||
|
|
||||||
:or
|
:or
|
||||||
{format-signal->prelude-fn (format-signal->prelude-fn) ; (fn [signal])
|
{format-signal->prelude-fn (format-signal->prelude-fn) ; (fn [signal])
|
||||||
format-nsecs-fn (format-nsecs-fn) ; (fn [nanosecs])
|
format-nsecs-fn (format-nsecs-fn) ; (fn [nanosecs])
|
||||||
format-error-fn (format-error-fn) ; (fn [error])
|
format-error-fn (format-error-fn) ; (fn [error])
|
||||||
}}]
|
end-with-newline? true}}]
|
||||||
|
|
||||||
(let [signal-content-handler ; (fn [signal hf vf]
|
(let [nl newline
|
||||||
|
signal-content-handler ; (fn [signal hf vf]
|
||||||
(signal-content-handler
|
(signal-content-handler
|
||||||
{:format-nsecs-fn format-nsecs-fn
|
{:format-nsecs-fn format-nsecs-fn
|
||||||
:format-error-fn format-error-fn})]
|
:format-error-fn format-error-fn})]
|
||||||
|
|
@ -605,6 +626,7 @@
|
||||||
|
|
||||||
(when-let [ff format-signal->prelude-fn] (s+ (ff signal))) ; Prelude
|
(when-let [ff format-signal->prelude-fn] (s+ (ff signal))) ; Prelude
|
||||||
(signal-content-handler signal s++ enc/pr-edn*) ; Content
|
(signal-content-handler signal s++ enc/pr-edn*) ; Content
|
||||||
|
(when end-with-newline? (enc/sb-append sb nl))
|
||||||
(str sb))))))
|
(str sb))))))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue