来自log4j2的奇怪日志

时间:2015-03-18 11:56:35

标签: java tomcat log4j log4j2

我在Tomcat 8中运行使用log4j2的应用程序。一切正常,但每当我尝试记录某些内容时,Tomcat的stderr中都会显示以下消息:

ERROR Unable to create Lookup for web java.lang.ClassCastException: class org.apache.logging.log4j.web.WebLookup
    at java.lang.Class.asSubclass(Class.java:3396)
    at org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:64)
    at org.apache.logging.log4j.core.config.PropertiesPlugin.configureSubstitutor(PropertiesPlugin.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:766)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:706)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:339)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359)
....

那是什么意思?

正如我所说,一切都很完美,但我不希望看到这条消息,因为它看起来像是出了问题。

2 个答案:

答案 0 :(得分:2)

您可能缺少log4j-web依赖

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
    <version>2.2</version>
</dependency>

答案 1 :(得分:0)

当配置指向不存在的配置文件时,也可能发生此错误。

在我的例子中,web.xml 包含一个 init-param log4jConfiguration 定义一个尚未放置在服务器上的 Log4J 配置文件。