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

时间:2012-11-12 09:52:47

标签: 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("...");

再次工作。

有谁知道问题可能是什么?

问候

麦克

1 个答案:

答案 0 :(得分:1)

您的问题是在log4j v2中没有实现BasicConfigurator。您可以通过从log4j 1.2到log4j的桥接访问BasicConfigurator类。如果您正在使用Log4j v2,则不能再使用BasicConfigurator。

此时桥接库名为log4j-1.2-api-2.2.jar。问这个问题已经有几年了。

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

如果你没有使用类似的设置但是将级别设置为Error而不是Debug,则不需要进行任何配置。如果您希望日志消息的级别低于Error,则表明您需要创建自己的BasicConfigurator版本,或者您需要在类路径中放置log4j2。[xml | yaml | json]文件。