mirror of
https://github.com/status-im/timbre.git
synced 2025-02-06 09:03:38 +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)
|
||||
(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
|
||||
"Evaluates named expression and logs its result. Always returns the result.
|
||||
Defaults to :debug logging level and unevaluated expression as name."
|
||||
([expr] `(spy :debug ~expr))
|
||||
([level expr] `(spy ~level '~expr ~expr))
|
||||
([level name expr]
|
||||
`(try
|
||||
(let [result# ~expr] (log ~level ~name result#) result#)
|
||||
(catch Exception e#
|
||||
(log ~level '~expr (str "\n" (stacktrace/pst-str e#)))
|
||||
(throw e#)))))
|
||||
`(log-and-rethrow-errors
|
||||
(let [result# ~expr] (log ~level ~name result#) result#))))
|
||||
|
||||
(defmacro ^:private def-logger [level]
|
||||
(let [level-name (name level)]
|
||||
@ -389,16 +396,6 @@
|
||||
|
||||
(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
|
||||
"Shorthand for:
|
||||
(require '[taoensso.timbre :as timbre
|
||||
|
Loading…
x
Reference in New Issue
Block a user