无法启用Spring框架的日志记录 [英] can't enable logging of spring framework
问题描述
我想在Spring框架和Spring Security中配置日志记录,并遵循
I want to configure the logging in Spring framework and Spring Security, and followed this http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/overview.html#overview-not-using-commons-logging
但是当我加载Tomcat时,我遇到了这个问题:
but when I load the Tomcat I got this problem:
GRAVE:子容器在启动过程中失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/RH-Explore]] 在java.util.concurrent.FutureTask.report(未知源)在 java.util.concurrent.FutureTask.get(未知源) org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1575) 在 org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1565) 在java.util.concurrent.FutureTask.run(未知来源) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源),位于 java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) java.lang.Thread.run(未知源)由: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/RH-Explore]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ...还有6个
GRAVE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]] at java.util.concurrent.FutureTask.report(Unknown Source) at java.util.concurrent.FutureTask.get(Unknown Source) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 6 more
原因:java.lang.NoClassDefFoundError: org/springframework/core/io/Resource java.lang.Class.getDeclaredFields0(本机方法),位于 java.lang.Class.privateGetDeclaredFields(未知源),网址为 java.lang.Class.getDeclaredFields(未知源),网址为 org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) 在 org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270) 在 org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89) 在 org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63) 在 org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415) 在 org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892) 在 org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ...还有6个
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/io/Resource at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Unknown Source) at java.lang.Class.getDeclaredFields(Unknown Source) at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106) at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89) at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63) at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5412) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 more
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security.version}</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
推荐答案
我解决了问题!
首先,此错误:
GRAVE:子容器在启动过程中失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/RH-Explore]]
GRAVE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RH-Explore]]
是部署问题,所以我为项目做了清理,然后出现此错误:
is problem of deployment, so I did a clean for the project and then i got this error :
坟墓:上下文环境初始化的例外 (上下文已初始化)àl'instance de classe d'écoute(侦听器) org.springframework.web.context.ContextLoaderListener java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker; Ljava/lang/String; ILjava/lang/String; [Ljava/lang/Object; Ljava/lang/Throwable;)V
Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
此错误是SLF4J
兼容性的问题,因此我将版本从1.5.8
更改为1.7.12
而且我发现由于此错误,应从pom.xml
jar中删除一些重复的SLF4J
软件包:
this error is a problem of compatibilities of the SLF4J
, so I changed the version from 1.5.8
to 1.7.12
and also I found some duplicated SLF4J
packages should be removed from the pom.xml
jars because of this error :
SLF4J:类路径包含多个SLF4J绑定.
SLF4J: Class path contains multiple SLF4J bindings.
在启动tomcat时,控制台中也出现此错误:
also I have this error in the console while starting tomcat:
信息:在类路径上未检测到Spring WebApplicationInitializer类型
INFOS: No Spring WebApplicationInitializer types detected on classpath
这是servlet-api
中的问题,我使用的是版本2.5
,因此为了解决此问题,我将其更改为版本3.0.1
this a problem in servlet-api
, I am using the version 2.5
so to solve it I changed to the version 3.0.1
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
所有问题都消失了,春季测井工作良好:D
and all problems is gone and spring logging is working fine :D
这篇关于无法启用Spring框架的日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!