java - SLF4J,通用日志记录,控制台输出

标签 java apache-commons slf4j apache-commons-logging

我有这个第 3 方库:

  • slf4j-api-1.5.5.jar
  • slf4j-jdk14-1.5.5.jar
  • jcl-over-slf4j-1.5.5.jar

我想针对这个库编写一些测试并查看它的日志输出,我不想再添加任何日志记录库(没有 log4j 或其他任何东西)。

我知道 SLF4J 和 Common Logging 都是日志记录抽象,所以我可能需要编写自己的简单具体记录器(或者可能不需要,因为 jcl-over-slf4j 包含 org.apache.commons.logging.impl.SimpleLog?) .如果是这样,我应该实现什么接口(interface),更重要的是,我如何设置 SL4J/Common Logging 以在我的测试中使用我的记录器?我读了SLF4J docs that I have to modify the StaticLoggerBinder class ...这真的意味着我实际上必须下载 SLF4J 源代码、修改类并重新编译它吗?

最佳答案

我们使用 SLF4J。它非常有用,但有几个 jar 的名称令人困惑,开始时并不清楚哪些不兼容。

SLF4J 是您用于记录代码的 API(例如 log.info("blah")。但是,SLF4J 没有配置方面的内容。在运行时您添加 一个 jar 到将 API 绑定(bind)到“真实”日志子系统的类路径。如果你想使用 Log4J,请添加 slf4j-log4j.jarSimple or JDK 的 StaticBinder jar,或 Logback。您可以像通常没有 SLF4J 的情况那样配置任何这些日志记录实现。

有几个SLF4J modules可用于将使用 Log4J、Apache Commons Logging 和 java.util.logging 的 API 编写的日志语句重定向到 SLF4J。这允许您为所有这些分散的实现设置单个日志记录配置。 (如果您有直接绑定(bind)到任何遗留日志记录框架的库,这对于避免同时配置 Log4J 和 JUL 非常有用。)

SLF4J legacy page深入解释这些概念。哎呀,甚至还有a module将 Sysout.out/err 重定向到 SFL4J。

为了更直接地回答您的问题:确定您可以编写自己的日志记录实现以在 SLF4J 下运行;但这样做的唯一原因是因为您已经被锁定在一些本土的 craptastic 日志记录框架中。

关于java - SLF4J,通用日志记录,控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911826/

相关文章:

java - 与 Web 应用程序一起运行单独的程序

java - 警报对话框之后的警报对话框

java - 计算使用 docx4j 编辑的 word 文件中的页数/行数

java - Oracle 将 ""变为 NULL

java - commons net ftp死锁?

java - 在 Java 中检查字符串是否是 ISO 语言的 ISO 国家/地区的更简洁方法

java - 如何调试 getResourceAsStream()?

scala - 使用 slf4j-simple 进行流畅的日志记录

unit-testing - 单元测试 SLF4J 日志消息的最佳方法是什么?

java - 无法使用 SLF4J 禁用 quartz 调度程序日志记录