我将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,这是开发日志记录最合理的地方?
答案 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>
此配置文件的基本说明是
appender
:您可以定义多个appender,我为您设置的appender称为CONSOLE
并且是ConsoleAppender
,这意味着它在标准输出上写入(在tomcat中)环境,catalina.out
)。layout
是日志文件布局的定义,请查看PatternLayout以了解我编写的内容的含义并根据您的需要进行修改logger
,您可以在其中为应用程序定义一个或多个记录器。在这里,我只是使用默认level rootLogger
来定义info
,并使用CONSOLE
appender。将此文件放在类路径中的任何位置,您将配置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