Log4j,Spring MVC,没有可用于记录器的appender

时间:2012-03-13 20:20:31

标签: spring-mvc log4j

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.

这意味着无法找到log4j.properties。但我不知道如何解决这个问题,因为一切似乎都运转正常。

4 个答案:

答案 0 :(得分:17)

将spring Log4jConfigListener作为web.xml中的第一个侦听器。

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

您可以在上下文参数中设置upp log4j属性的位置,但如果它放在类路径上则不需要这样做。

一个例子是......

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/resources/log4j.properties</param-value>
</context-param>

答案 1 :(得分:6)

将这两行代码移到web.xml的顶部以解决问题。

<!-- location of log4j config file -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

<!-- applies log4j configuration -->
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

答案 2 :(得分:1)

如果您正在使用eclipse和tomcat进行开发,则以下方法应该可以正常工作

在pom.xml

中声明以下依赖项
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

创建log4j.properties文件并将其放在resources文件夹中(“src / main / resources”)

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
#outputs to Tomcat home
log4j.appender.file.File=${catalina.home}/logs/mylogfile.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

然后在你的班级中,实例化记录器

private static final Logger logger = Logger.getLogger(WelcomeController.class);

之后,您可以在任何您想要的地方使用记录器

logger.debug("this will appear as a log in mylogfile.log!");

答案 3 :(得分:0)

我已经在创建问题的<filter>文件中配置了web.xml。我将其注释掉,然后对我有用!