log4j2 - 使用 log4j2 进行公共(public)日志记录

标签 log4j2 apache-commons-logging

我正在使用带有公共(public)日志记录的 log4j 1.2。现在我正在尝试将其升级到 log4j2。
但是如何使用 log4j2 和 commons-logging 来初始化 log4j2。

我尝试以以下方式初始化公共(public)日志记录。它工作正常

**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class));
**Statement2**:log.debug("debug statement");

在这里,我使用 org.apache.commons.logging.Log 类型的对象,使用 org.apache.log4j.Logger 的对象初始化.( org.apache.log4j.Logger 是 log4j 1.2 中的类,从 log4j2 更改为 org.apache.logging.log4j.Logger )

现在我升级到 log4j2 后,声明1 不能用作 Log4JLogger()构造函数需要 org.apache.log4j.Logger 类型的参数类型。

那么,如何在 Log4j2 中使用公共(public)日志记录呢?

最佳答案

您需要添加 log4j-jcl-2.7依赖于你的类路径。

请参阅“which jars" question in the FAQ

在您的代码中,使用

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class MyClass {
    private Log log = LogFactory.getLog(MyClass.class);
    ...

您不应明确使用 Log4JLogger .

此外,请注意 Log4j2 与 Log4j 1 的不同之处在于它在其 API 和实现之间提供了清晰的分离。因此,与 10 年前使用 Log4j 1 相比,现在使用包装库的好处要少得多。

考虑直接使用 Log4j2 API:它在 API 和实现之间提供了相同的分离,并且比 commons logging 或 slf4j 功能更丰富。

请注意,直接使用 Log4j2 API 几乎没有风险:log4j-to-slf4j-2.x如果您改变主意并决定将 Logback(或其他 slf4j 实现)与直接使用 Log4j2 API 的应用程序一起使用,模块总是在那里。

关于log4j2 - 使用 log4j2 进行公共(public)日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462181/

相关文章:

java - Log4j2:SMTPAppender 不发送错误或致命级别的邮件

java - 如何告诉spring使用log4j2打印日志消息?

java - log4j.properties 文件中 log4j.rootLogger 属性的意义是什么?如果我不使用此属性会怎样?

java - 类路径上带有 jar 的 Tomcat webapp NoClassDefFoundError

grails - 在Grails 3.1.x中,如何配置grails日志记录以在日志记录语句中包含类名?

java - 使用 Liberty 配置文件配置 log4jdbc-log4j2

xml - Log4j2 xml 配置是否区分大小写?

java - log4j2领域的级别扩展

java - apache commons 日志记录是否支持占位符?

java - 如何禁用第三方库中的 Apache Commons/Log4J 日志记录?