抑制 `clojure.tools.logging` 的输出

suppress output from `clojure.tools.logging`

我很难隐藏 clojure.tools.logging 库正在使用的输出。该库正在记录一个 error,这会导致 stderr 上的堆栈跟踪,但这对我来说不是错误级别的消息,我想不出隐藏它的方法。我将 timbre 用于我自己的应用程序,所以我想捕获输出并将其重新记录为警告或只是调试是理想的,但现在我只需要消除堆栈跟踪噪声。

我试过将 err 重新绑定到 out,然后将正文嵌套在 with-out-str.[=20= 中]

我在 CLASSPATH 上尝试了一个 log4j.properties 文件,根记录器的默认级别设置为 fatal

我已经尝试了一个小时的其他杂项。日志记录是在此处引入库的:https://github.com/apa512/clj-rethinkdb/commit/5587bdadaed663fcab3b7c616840dfffec84569a 我不知道如何捕获它的记录器并设置它的级别,或者为什么在我的 log4j.properties 中设置根记录器的级别不起作用。

在我简单地做一个 java -jar app 2> /dev/null 之前有什么建议吗?

clojure.tools.logging 项目根据类路径上可用的依赖项动态加载日志记录实现。除非您已经将 SLF4J、Commons Logging 或 Log4j 作为项目依赖项,否则 tools.logging 将回退到使用 java.util.logging(在没有任何配置的情况下将所有输出定向到 System.out)和将 log4j.properties 放在您的类路径中将没有任何效果。

如果您想将 tools.logging 的输出重定向到 Timbre,我建议将 [org.slf4j/slf4j-api] 添加到您的项目依赖项中,然后使用 slf4j-timbre 适配器。