Java 来自log4j2的奇怪日志
我正在Tomcat8中运行一个应用程序,它使用Java 来自log4j2的奇怪日志,java,tomcat,log4j,log4j2,Java,Tomcat,Log4j,Log4j2,我正在Tomcat8中运行一个应用程序,它使用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.a
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)
....
错误无法为web java.lang.ClassCastException创建查找:class org.apache.logging.log4j.web.WebLookup
在java.lang.Class.asSubclass(Class.java:3396)中
位于org.apache.logging.log4j.core.lookup.Interpolator.(Interpolator.java:64)
位于org.apache.logging.log4j.core.config.PropertiesPlugin.configureSubstitutor(PropertiesPlugin.java:57)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:483)
位于org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:766)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:706)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:339)
位于org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161)
位于org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359)
....
这是怎么回事
正如我所说,一切都很完美,但我不希望看到这条消息,因为它看起来好像出了问题。您可能缺少log4j web依赖项
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.2</version>
</dependency>
org.apache.logging.log4j
log4jweb
2.2
当配置指向不存在的配置文件时,也可能发生此错误
在我的例子中,web.xml包含一个init参数
log4jConfiguration
定义了一个尚未放在服务器上的Log4J配置文件。您完全破坏了日志记录,可能是因为您的应用程序中有Log4J 1,而tomcat使用了2。我不使用maven,但谢谢,该库丢失了!