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

dan*_*dan 4 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
Run Code Online (Sandbox Code Playgroud)

我想设置log/debug将输出的日志记录级别.

Nic*_*zyk 6

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
Run Code Online (Sandbox Code Playgroud)

虽然您可以继续使用 clojure.tools.logging 路线,但现在很多人都喜欢timbre

使用音色,您可以将其添加到您的 project.clj 中:

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
Run Code Online (Sandbox Code Playgroud)

然后要求它:

 [com.taoensso/timbre "4.1.0"]      
Run Code Online (Sandbox Code Playgroud)

最后使用它:

 (require '[taoensso.timbre :as timbre]) 
Run Code Online (Sandbox Code Playgroud)

有关更详细的配置选项,请参见此处


hen*_*374 6

与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)
Run Code Online (Sandbox Code Playgroud)


Aar*_*ush 5

如果您使用的是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")
Run Code Online (Sandbox Code Playgroud)