Last active
December 22, 2015 06:39
-
-
Save eric/6432496 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(def levels {:trace org.apache.log4j.Level/TRACE | |
:debug org.apache.log4j.Level/DEBUG | |
:info org.apache.log4j.Level/INFO | |
:warn org.apache.log4j.Level/WARN | |
:error org.apache.log4j.Level/ERROR | |
:fatal org.apache.log4j.Level/FATAL}) | |
(defn set-level | |
"Set the level for the given logger, by string name. Use: | |
(set-level \"skuld.node\", :debug)" | |
([level] | |
(. (Logger/getRootLogger) (setLevel (levels level)))) | |
([logger level] | |
(. (Logger/getLogger logger) (setLevel (levels level))))) | |
(defmacro suppress | |
"Turns off logging for the evaluation of body." | |
[loggers & body] | |
(to-level :fatal loggers body) | |
(defmacro to-level | |
"Sets logging for the evaluation of body to the desired level." | |
[level loggers & body] | |
(let [[logger & more] (flatten [loggers])] | |
(if logger | |
`(let [l4j-logger (Logger/getLogger ~logger)] | |
[old-level# (.getLevel l4j-logger)] | |
(try | |
(set-level ~logger level) | |
(to-level level ~more ~@body) | |
(finally | |
(.setLevel l4j-logger old-level#)))) | |
`(do ~@body)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment