0

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

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,这是最合理的开发日志记录位置?

4

2 回答 2

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,我给你设置的那个叫CONSOLEa ConsoleAppender,意思是写在标准输出上(在tomcat环境下,catalina.out)。
  2. layout是你的日志文件布局的定义,看看PatternLayout来理解我写的意思并根据你的需要进行修改
  3. logger,您可以在其中为您的应用程序定义一个或多个记录器。在这里,我简单地定义了一个rootLogger默认级别 info,它将使用CONSOLE附加程序。

将此文件放在类路径中的任何位置,您将配置好 log4j。完整教程可以参考http://logging.apache.org/log4j/1.2/manual.html

编辑我再次阅读了你的问题,我建议你添加第二个记录器来记录春天的东西,比如

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

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

于 2013-01-29T11:11:08.300 回答
0

最简单的方法(来源

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

然后重新部署并开启您想要的 BOOMcatalina.out

于 2013-01-29T11:20:48.400 回答