diff --git a/epl-v10.html b/epl-v10.html
index 813c07d..4628213 100644
--- a/epl-v10.html
+++ b/epl-v10.html
@@ -11,7 +11,7 @@
margin: 0.25in 0.5in 0.25in 0.5in;
tab-interval: 0.5in;
}
- p {
+ p {
margin-left: auto;
margin-top: 0.5em;
margin-bottom: 0.5em;
diff --git a/project.clj b/project.clj
index 5f68ac8..23b1125 100644
--- a/project.clj
+++ b/project.clj
@@ -1,4 +1,4 @@
-(defproject com.taoensso/timbre "0.5.1"
+(defproject com.taoensso/timbre "0.5.2"
:description "Simple, flexible, all-Clojure logging. No XML!"
:url "https://github.com/ptaoussanis/timbre"
:license {:name "Eclipse Public License"}
@@ -16,4 +16,4 @@
:releases {:checksum :fail :update :always}}}
:aliases {"all" ["with-profile" "1.3:1.4:1.5"]}
:min-lein-version "2.0.0"
- :warn-on-reflection true)
\ No newline at end of file
+ :warn-on-reflection true)
diff --git a/src/timbre/core.clj b/src/timbre/core.clj
index b6ca8de..f25980a 100644
--- a/src/timbre/core.clj
+++ b/src/timbre/core.clj
@@ -5,7 +5,7 @@
[clj-stacktrace.repl :as stacktrace]
[postal.core :as postal])
(:import [java.util Date Locale]
- [java.text SimpleDateFormat]))
+ java.text.SimpleDateFormat))
;;;; Default configuration and appenders
@@ -71,13 +71,13 @@
;; {:from "me@draines.com" :to "foo@example.com"}
:postal nil}}))
-(defn set-config! [[k & ks] val] (swap! config assoc-in (cons k ks) val))
-(defn set-level! [level] (set-config! [:current-level] level))
-
;;;; Define and sort logging levels
-(def ^:private ordered-levels [:trace :debug :info :warn :error :fatal])
+(def ^:private ordered-levels [:trace :debug :info :warn :error :fatal :report])
(def ^:private scored-levels (zipmap ordered-levels (range)))
+(defn check-level
+ [x] (when-not (some #{x} ordered-levels)
+ (throw (Exception. (str "Invalid logging level: " x)))))
(def compare-levels
(memoize (fn [x y] (- (scored-levels x) (scored-levels y)))))
@@ -85,6 +85,14 @@
(defn sufficient-level?
[level] (>= (compare-levels level (:current-level @config)) 0))
+;;;; Config helpers
+
+(defn set-config! [[k & ks] val] (swap! config assoc-in (cons k ks) val))
+(defn set-level!
+ [level]
+ (check-level level)
+ (set-config! [:current-level] level))
+
;;;; Appender-fn decoration
(defn- make-timestamp-fn
@@ -197,8 +205,9 @@
(defmacro log
"Dispatches given arguments to relevant appender-fns iff logging level is
sufficient."
- {:arglists '([message & more] [throwable message & more])}
+ {:arglists '([level message & more] [level throwable message & more])}
[level & args]
+ (check-level level)
`(let [level# ~level]
(when (sufficient-level? level#)
(when-let [juxt-fn# (@juxt-cache level#)] ; Any relevant appenders?
@@ -226,7 +235,7 @@
(log :trace "arg1"))
(defmacro spy
- "Evaluates expression and logs its form and result. Returns the result.
+ "Evaluates expression and logs its form and result. Always returns the result.
Defaults to :debug logging level."
([expr] `(spy :debug ~expr))
([level expr]