java - 如何初始化log4j 2.0? LogManager.getContext 带来空指针异常

标签 java log4j

我正在尝试使用 log4j 的当前版本 2.0 beta。 我已经包含了 log4j 的所有必需的 jar 文件。 启动应用程序只会带来:

Exception in thread "main" java.lang.NullPointerException
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:203)
    at org.apache.log4j.LogManager$PrivateManager.getContext(LogManager.java:62)
    at org.apache.log4j.LogManager.reconfigure(LogManager.java:50)
    at org.apache.log4j.BasicConfigurator.configure(BasicConfigurator.java:28)

都不是

org.apache.log4j.BasicConfigurator.configure(); 

也不

  private static final Logger log = LogManager.getLogger("...");

不再工作了。

有谁知道问题出在哪里吗?

问候

迈克

最佳答案

你的问题是BasicConfigurator没有在log4j v2中实现。您将通过从 log4j 1.2 到 log4j 2 的桥梁访问 BasicConfigurator 类。如果您使用的是 Log4j v2,则无法再使用 BasicConfigurator。

此时桥库名为log4j-1.2-api-2.2.jar。距离提出这个问题已有几年了。

因此,如果您有桥,您可以访问大多数 Log4j 1.2 类,但它们背后可能没有实现。 BasicConfigurator 就是这种情况的一个例子。这就是您收到空指针异常的原因。

如果您同意类似的设置,但级别设置为“错误”而不是“调试”,则无需进行任何配置。如果您希望日志消息的级别低于错误,那么您似乎需要创建自己的 BasicConfigurator 版本,或者需要将 log4j2.[xml|yaml|json] 文件放在类路径上。

关于java - 如何初始化log4j 2.0? LogManager.getContext 带来空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341509/

相关文章:

java - 如何在窗口关闭或应用程序重新运行时删除 servlet 中的 cookie

java - 解析奇怪的JSON格式

java - 多对一关系的最佳 URL 结构

Java内存空间重叠?

java - spring事务注释方法无需对实体进行合并调用

java - 如何创建 MyLogger?

linux - 使用 log4j 将日志数据写入 syslog

log4j - Log4j 1.2可以和RollingFileAppender和FileAppender有什么区别吗?

json - 以 json 格式登录

java - 使用 log4j 将字符流转储到单行