【问题标题】:suppress output from `clojure.tools.logging`抑制来自`clojure.tools.logging`的输出
【发布时间】:2015-11-16 18:28:30
【问题描述】:

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

我尝试将 err 重新绑定到 out,然后将正文嵌套在 with-out-str 中。

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

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

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

【问题讨论】:

    标签: logging clojure log4j rethinkdb


    【解决方案1】:

    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 适配器。

    【讨论】:

    • clojure.tools.logging 似乎真的很有用,但我最终的解决方案是将[org.slf4j/slf4j-log4j12 "1.7.12"] 添加到我的project.clj 依赖项中,并将log4j.properties 文件放在resources/ 目录中log4j.rootLogger=FATAL在里面。我暂时不用其他库的日志记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多