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

在Clojure.tools.logging中设置Clojure日志记录级别,clojure,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/debu

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

clojure.tools.logging要求您以java方式配置日志记录,这将在大多数情况下有效地将4j作为底层日志记录框架(如果您添加它/将它作为依赖项)因此,最终您只需要在类路径上有一个包含以下内容的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路线,但现在有相当多的人喜欢它

使用Timber,您可以使用以下选项将其添加到project.clj中:

[com.taonesso/timbre“4.1.0”]
然后,要求提供:

(需要“[taonesso.timber:as timber])
最后,将其用于:

(音色/调试“你好”)
; 将打印
(def示例配置{:级别:警告})
(音色/合并配置!示例配置)
; 更新配置
(音色/调试“你好”)
; 不会打印。

有关更详细的配置选项,请参阅。

如果您使用的是Log4J,这里有一个使用Java互操作的快速解决方案

(ns示例)
(:需要[clojure.tools.logging:as log])
(:导入(org.apache.log4j记录器级别)))
(.setLevel(Logger/getLogger(str*ns*))Level/ALL)
(记录/调试“工作”)

与Aaron的答案相同,但使用logback并更改根记录器:

(import ch.qos.logback.classic.Logger)
(import ch.qos.logback.classic.Level)
(.setLevel 
   (org.slf4j.LoggerFactory/getLogger (Logger/ROOT_LOGGER_NAME)) Level/ALL)

这对我来说不起作用,仍然直接使用slf4j,这可以代替
(.setLevel(Logger/getRootLogger)Level/DEBUG)