我想设置日志记录级别,但既不熟悉Java日志记录也不熟悉不熟悉的contrib库。
(ns com.etc.etc (:require [clojure.tools.logging :as log]))
com.etc.etc=> (log/info "foo")
INFO com.etc.etc.invoke nREPL-worker-1 - foo
nil
com.etc.etc=> (log/debug "bar")
nil
我想设置日志记录级别,以便输出log/debug
。
答案 0 :(得分:5)
与Aaron的答案相同,但使用logback并更改root logger:
(import ch.qos.logback.classic.Logger)
(import ch.qos.logback.classic.Level)
(.setLevel
(org.slf4j.LoggerFactory/getLogger (Logger/ROOT_LOGGER_NAME)) Level/ALL)
答案 1 :(得分:4)
如果您使用的是Log4J,这是使用Java互操作的快速解决方案。
(ns example
(:require [clojure.tools.logging :as log])
(:import (org.apache.log4j Logger Level)))
(.setLevel (Logger/getLogger (str *ns*)) Level/ALL)
(log/debug "works")
答案 2 :(得分:2)
clojure.tools.logging要求你配置java方式的日志记录,这将有效地将log4j作为底层日志记录框架,大部分时间(如果你添加它/将它作为依赖项),所以最终只需要你需要要做的是在类路径上有一个 log4j.properties 文件,其中包含以下内容:
log4j.rootLogger=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c: %m%n
虽然你可以继续使用clojure.tools.logging路线,但现在很多人都喜欢timbre。
使用音色,您可以将其添加到project.clj中:
[com.taoensso/timbre "4.1.0"]
然后要求:
(require '[taoensso.timbre :as timbre])
最后用它:
(timbre/debug "hello")
; will print
(def example-config {:level :warn })
(timbre/merge-config! example-config)
; update the configuration
(timbre/debug "hello")
; will not print.
有关更详细的配置选项,请参阅here。