配置Web应用程序的日志记录

时间:2013-01-29 10:46:12

标签: tomcat log4j war

我将Spring webapp打包为一个部署到Tomcat的WAR文件。

Catalina.out节目

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.
gen 29, 2013 11:37:04 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart

这可能是Spring或Hibernate中的配置错误。但是为了找到listenerStart错误的原因,我认为启用log4j是必要的。谷歌搜索我发现log4j警告是由缺少log4j配置引起的,这是肯定的,因为我还没有配置它。

如何配置log4j(我在哪里放置配置文件以及我输入什么内容)以便将错误记录到catalina.out,这是开发日志记录最合理的地方?

2 个答案:

答案 0 :(得分:0)

像这样创建一个log4j.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE">
        <param value="INFO" name="Threshold"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param value="%d{DATE}\t%m%n" name="ConversionPattern"/>
        </layout>
    </appender>
    <!-- Here you create additional logger for your application, ie:
    <logger name="package.xxx">
         <level value="info" />
    </logger>
    -->
    <logger name="rootLogger">
        <level value="info"/>
        <appender-ref ref="CONSOLE"/>
    </logger>
</log4j:configuration>

此配置文件的基本说明是

  1. appender:您可以定义多个appender,我为您设置的appender称为CONSOLE并且是ConsoleAppender,这意味着它在标准输出上写入(在tomcat中)环境,catalina.out)。
  2. layout是日志文件布局的定义,请查看PatternLayout以了解我编写的内容的含义并根据您的需要进行修改
  3. logger,您可以在其中为应用程序定义一个或多个记录器。在这里,我只是使用默认level rootLogger来定义info,并使用CONSOLE appender。
  4. 将此文件放在类路径中的任何位置,您将配置log4j。有关完整教程,请参阅http://logging.apache.org/log4j/1.2/manual.html

    编辑我再次阅读了您的问题,我建议您添加第二个记录器以记录弹簧内容,例如

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

    您只需将级别设置为您希望Spring消息的细粒度。完整的教程将非常清楚地解释级别,但简而言之,级别越高,您的日志就越简洁。

答案 1 :(得分:0)

最简单的方法(source

src/main/webapp/WEB-INF/classes(考虑Maven布局)或WebContent/WEB-INF/classes(考虑经典的Eclipse布局)中创建一个logging.properties文件,其中包含以下内容:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

然后在catalina.out

上重新部署并获得所需的BOOM