mirror of
https://github.com/status-im/timbre.git
synced 2025-02-11 11:16:31 +00:00
Clean up spy
error logging, catch Throwables for log-errors
, log-and-rethrow-errors
This commit is contained in:
parent
853807df4c
commit
ddd9e18d8e
@ -359,17 +359,24 @@
|
|||||||
`(when (logging-enabled? ~level)
|
`(when (logging-enabled? ~level)
|
||||||
(log* {} ~level ~sigs format)))
|
(log* {} ~level ~sigs format)))
|
||||||
|
|
||||||
|
(defmacro log-errors [& body] `(try ~@body (catch Throwable t# (error t#))))
|
||||||
|
(defmacro log-and-rethrow-errors [& body]
|
||||||
|
`(try ~@body (catch Throwable t# (error t#) (throw t#))))
|
||||||
|
|
||||||
|
(defmacro logged-future [& body] `(future (log-errors ~@body)))
|
||||||
|
|
||||||
|
(comment (log-errors (/ 0))
|
||||||
|
(log-and-rethrow-errors (/ 0))
|
||||||
|
(logged-future (/ 0)))
|
||||||
|
|
||||||
(defmacro spy
|
(defmacro spy
|
||||||
"Evaluates named expression and logs its result. Always returns the result.
|
"Evaluates named expression and logs its result. Always returns the result.
|
||||||
Defaults to :debug logging level and unevaluated expression as name."
|
Defaults to :debug logging level and unevaluated expression as name."
|
||||||
([expr] `(spy :debug ~expr))
|
([expr] `(spy :debug ~expr))
|
||||||
([level expr] `(spy ~level '~expr ~expr))
|
([level expr] `(spy ~level '~expr ~expr))
|
||||||
([level name expr]
|
([level name expr]
|
||||||
`(try
|
`(log-and-rethrow-errors
|
||||||
(let [result# ~expr] (log ~level ~name result#) result#)
|
(let [result# ~expr] (log ~level ~name result#) result#))))
|
||||||
(catch Exception e#
|
|
||||||
(log ~level '~expr (str "\n" (stacktrace/pst-str e#)))
|
|
||||||
(throw e#)))))
|
|
||||||
|
|
||||||
(defmacro ^:private def-logger [level]
|
(defmacro ^:private def-logger [level]
|
||||||
(let [level-name (name level)]
|
(let [level-name (name level)]
|
||||||
@ -389,16 +396,6 @@
|
|||||||
|
|
||||||
(def-loggers) ; Actually define a logger for each logging level
|
(def-loggers) ; Actually define a logger for each logging level
|
||||||
|
|
||||||
(defmacro log-errors [& body] `(try ~@body (catch Exception e# (error e#))))
|
|
||||||
(defmacro log-and-rethrow-errors [& body]
|
|
||||||
`(try ~@body (catch Exception e# (error e#) (throw e#))))
|
|
||||||
|
|
||||||
(defmacro logged-future [& body] `(future (log-errors ~@body)))
|
|
||||||
|
|
||||||
(comment (log-errors (/ 0))
|
|
||||||
(log-and-rethrow-errors (/ 0))
|
|
||||||
(logged-future (/ 0)))
|
|
||||||
|
|
||||||
(defn refer-timbre
|
(defn refer-timbre
|
||||||
"Shorthand for:
|
"Shorthand for:
|
||||||
(require '[taoensso.timbre :as timbre
|
(require '[taoensso.timbre :as timbre
|
||||||
|
Loading…
x
Reference in New Issue
Block a user