在Spring Framework下:WARN:WARN找不到logger的附加程序(org.springframework.web.context.ContextLoader)

时间:2013-01-21 05:18:49

标签: configuration log4j slf4j appender

我花了一整天的时间来尝试解决我在webapp中使用log4j时遇到的日志记录问题。无论我做什么,我都无法摆脱以下情况:

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

为了清楚起见,我已阅读Stack Overflow上有关此问题的所有文章。我已经阅读了log4j手册。我经历了十几个不同的教程。我尝试过属性方法和XML方法(分别是log4j.properties和log4j.xml)。此外,我已确认正在读取log4j.xml文件。除了服务器在启动期间告诉我的事实,我可以通过.xml文件影响反馈级别。所以,是的,log4j.xml文件位于CLASSPATH中。

我知道我错过了一些简单而基本的东西。以下是相关文件:

LOG4J.XML(/ WEB-INF):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p: %c - %m%n" />
    </layout>
</appender>

<!-- Application Loggers -->
<logger name="com.tiersoftinc.testlog">
    <level value="info" />      
</logger>

<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
    <level value="info" />      
</logger>

<logger name="org.springframework.beans">
    <level value="info" />      
</logger>

<logger name="org.springframework.context">
    <level value="info" />      
</logger>

<logger name="org.springframework.web">
    <level value="info" />      
</logger>

<!-- Root Logger -->
<root>
    <priority value="warn" />
    <appender-ref ref="console" />
</root>

</log4j:configuration>

和WEB.XML(/ WEB-INF):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters, and the applicationContext.xml file -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring/root-context.xml
        /WEB-INF/spring/app-context.xml         
    </param-value>      
</context-param>    

<!-- Logging listener -->
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>      
</listener>

<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>           
    </init-param>       
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>  

</web-app>

和APP-CONTEXT.XML(/ WEB-INF / spring):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<!-- Activates various annotations to be detected in bean classes -->   
<context:annotation-config />   

<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. 
For example @Controller and @Service. Make sure to set the correct base-package --> 
<context:component-scan base-package="com.tiersoftinc.gridlab3" />   

<!-- Configures the annotation-driven Spring MVC Controller programming model.  
Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
<mvc:annotation-driven />

<mvc:resources mapping="/resources/**" location="/resources/" />        

<!-- Imports datasource configuration -->   
<import resource="app-context-mongo.xml"/>

</beans>

和APP-CONTEXT-MONGO.XML(/ WEB-INF / spring):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                    http://www.springframework.org/schema/tx
                    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd                      
                    http://www.springframework.org/schema/context                       
                    http://www.springframework.org/schema/context/spring-context-3.1.xsd                        
                    http://www.springframework.org/schema/data/mongo                        
                    http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd                       
                    http://www.springframework.org/schema/util                      
                    http://www.springframework.org/schema/util/spring-util-3.1.xsd">    

<!-- Activate Spring Data MongoDB repository support -->
<mongo:repositories base-package="com.tiersoftinc.gridlab3.repository" />

<bean id="propertyPlaceholderConfigurer"   
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    <property name="locations">  
        <list>  
            <value>/WEB-INF/spring/database.properties</value>  
        </list>  
    </property> 
</bean>  

<!-- MongoDB host -->
<mongo:mongo host="${mongo.host.name}" port="${mongo.host.port}"/> 

<!-- Template for performing MongoDB operations -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"

c:mongo-ref="mongo" c:databaseName="${mongo.db.name}"/>

<!-- Service for initializing MongoDB with sample data using MongoTemplate -->
<bean id="initGridLab3Service" class="com.tiersoftinc.gridlab3.services.InitGridLab3Service" init-method="init"/>   

</beans>

,最后是ROOT-CONTEXT.XML(/ WEB-INF / spring):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">    

<!-- Root Context: defines shared resources visible to all other web components -->     
<context:annotation-config />

</beans>

我错过了什么?

谢谢。

2 个答案:

答案 0 :(得分:5)

你试过这个吗?

 <logger name="org.springframework.web">
     <level value="info" /> 
     <appender-ref ref="console" />     
 </logger>

答案 1 :(得分:2)

将这些行放在web.xml的开头

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

    <context-param>
      <param-name>log4jConfigLocation</param-name>
      <param-value>classpath:/main/resources/log4j.xml</param-value>
    </context-param>

有关详细信息,请参阅此链接http://mariemjabloun.blogspot.com/2014/04/resolved-log4jwarn-no-appenders-could.html