在clojure.tools.logging中设置Clojure日志记录级别

时间:2015-08-10 18:33:51

标签: clojure

我想设置日志记录级别,但既不熟悉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

3 个答案:

答案 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