mirror of https://github.com/status-im/timbre.git
Merge branch 'dev'
This commit is contained in:
commit
cf0f41dd7d
|
@ -1,7 +1,7 @@
|
|||
Current [semantic](http://semver.org/) version:
|
||||
|
||||
```clojure
|
||||
[com.taoensso/timbre "1.5.2"]
|
||||
[com.taoensso/timbre "1.5.3"]
|
||||
```
|
||||
|
||||
# Timbre, a (sane) Clojure logging & profiling library
|
||||
|
@ -27,7 +27,7 @@ Timbre is an attempt to make **simple logging simple** and more **complex loggin
|
|||
Depend on Timbre in your `project.clj`:
|
||||
|
||||
```clojure
|
||||
[com.taoensso/timbre "1.5.2"]
|
||||
[com.taoensso/timbre "1.5.3"]
|
||||
```
|
||||
|
||||
and `use` the library:
|
||||
|
@ -59,7 +59,7 @@ There's little overhead for checking logging levels:
|
|||
(time (trace (Thread/sleep 5000)))
|
||||
%> "Elapsed time: 0.054 msecs"
|
||||
|
||||
(time (when true))
|
||||
(time (when false))
|
||||
%> "Elapsed time: 0.051 msecs"
|
||||
```
|
||||
|
||||
|
@ -122,7 +122,7 @@ Filter logging output by namespaces:
|
|||
To enable the standard [Postal](https://github.com/drewr/postal)-based email appender, add the Postal dependency to your `project.clj`:
|
||||
|
||||
```clojure
|
||||
[com.draines/postal "1.9.1"]
|
||||
[com.draines/postal "1.9.2"]
|
||||
```
|
||||
|
||||
And add the appender to your `ns` declaration:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(defproject com.taoensso/timbre "1.5.2"
|
||||
(defproject com.taoensso/timbre "1.5.3"
|
||||
:description "Clojure logging & profiling library"
|
||||
:url "https://github.com/ptaoussanis/timbre"
|
||||
:license {:name "Eclipse Public License"}
|
||||
|
|
|
@ -106,14 +106,14 @@
|
|||
:append true)
|
||||
(catch java.io.IOException _))))}}}))
|
||||
|
||||
(defn set-config! [[k & ks] val] (swap! config assoc-in (cons k ks) val))
|
||||
(defn set-config! [ks val] (swap! config assoc-in ks val))
|
||||
(defn merge-config! [& maps] (apply swap! config utils/deep-merge maps))
|
||||
(defn set-level! [level] (set-config! [:current-level] level))
|
||||
(defn set-level! [level] (set-config! [:current-level] level))
|
||||
|
||||
;;;; Define and sort logging levels
|
||||
|
||||
(def ^:private ordered-levels [:trace :debug :info :warn :error :fatal :report])
|
||||
(def ^:private scored-levels (assoc (zipmap ordered-levels (range)) nil 0))
|
||||
(def ^:private scored-levels (assoc (zipmap ordered-levels (next (range))) nil 0))
|
||||
|
||||
(defn error-level? [level] (boolean (#{:error :fatal} level)))
|
||||
|
||||
|
@ -147,9 +147,8 @@
|
|||
(let [now (System/currentTimeMillis)
|
||||
hash (str ns "/" message)
|
||||
allow? (fn [last-msecs]
|
||||
(if last-msecs
|
||||
(> (- now last-msecs) max-message-per-msecs)
|
||||
true))]
|
||||
(or (not last-msecs)
|
||||
(> (- now last-msecs) max-message-per-msecs)))]
|
||||
|
||||
(when (allow? (@flood-timers hash))
|
||||
(apfn apfn-args)
|
||||
|
@ -187,12 +186,12 @@
|
|||
(def get-hostname
|
||||
(utils/memoize-ttl
|
||||
60000 (fn [] (try (.. java.net.InetAddress getLocalHost getHostName)
|
||||
(catch java.net.UnknownHostException e
|
||||
(catch java.net.UnknownHostException _
|
||||
"UnknownHost")))))
|
||||
|
||||
(defn- wrap-appender-juxt
|
||||
"Wraps compile-time appender juxt with additional runtime capabilities
|
||||
(incl. middleware) controller by compile-time config. Like `wrap-appender-fn`
|
||||
(incl. middleware) controlled by compile-time config. Like `wrap-appender-fn`
|
||||
but operates on the entire juxt at once."
|
||||
[juxtfn]
|
||||
(->> ; Wrapping applies capabilities bottom-to-top
|
||||
|
@ -294,11 +293,11 @@
|
|||
|
||||
;;;; Define logging macros
|
||||
|
||||
(defmacro logging-enabled?
|
||||
(defn logging-enabled?
|
||||
"Returns true when current logging level is sufficient and current namespace
|
||||
is unfiltered."
|
||||
[level]
|
||||
`(and (sufficient-level? ~level) (@ns-filter-cache ~*ns*)))
|
||||
(and (sufficient-level? level) (@ns-filter-cache *ns*)))
|
||||
|
||||
(defmacro log*
|
||||
"Prepares given arguments for, and then dispatches to all relevant
|
||||
|
@ -314,7 +313,7 @@
|
|||
{:level ~level
|
||||
:error? (error-level? ~level)
|
||||
:instant (Date.)
|
||||
:ns (str ~*ns*)
|
||||
:ns ~(str *ns*)
|
||||
:message (if has-throwable?# (or (first xs#) x1#) x1#)
|
||||
:more (if has-throwable?#
|
||||
(conj (vec (rest xs#))
|
||||
|
|
Loading…
Reference in New Issue