我想设置日志记录级别,但既不熟悉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将输出的日志记录级别.
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)
有关更详细的配置选项,请参见此处。
与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)
如果您使用的是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)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |