0

我正在尝试使用 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("...");

工作了。

有谁知道是什么问题 ?

问候

麦克风

4

1 回答 1

1

您的问题是 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] 文件放在类路径中。

于 2015-04-23T14:46:50.637 回答