我的日志记录配置与log4j存在问题。所有的日志消息都按照预期显示在root.log文件中,但stdout只显示root.log的子集,尽管我将它配置为相同。Log4j:日志文件正确,但Stdout只显示子集
编辑:准确地说,我错过了a.b的所有消息。
编辑2:我不是绝对确定,但我认为,从a.b.的一些消息。 (INFO和DEBUG)在标准输出上被记录,而另一些则没有。可能是与线程相关的问题?例如。一些线程在做日志记录,有些不是?
以下是我的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 name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} [%t] (%C:%L) %-5p - %m%n" />
</layout>
</appender>
<appender name="FILE_ALL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.home}/logs/root.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-4r (%F:%L) %-5p %x - %m%n" />
</layout>
</appender>
<logger name="a.b.master">
<level value="DEBUG" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE_ALL" />
</logger>
<logger name="a.b.master.orm.support.HibernateSessionFilter">
<level value="INFO" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE_ALL" />
</logger>
<logger name="a.b.master.aop.hibernate.OpenSessionInRequestInterceptor">
<level value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE_ALL" />
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE_ALL"/>
</root>
</log4j:configuration>
我正在使用Commons Logging作为实现。
感谢您的帮助!
在你a.b.master.aop.hibernate.OpenSessionInRequestInterceptor,你有<电平值=“信息” />而不是信息 - 这可能是一个问题?否则:控制台输出中缺少哪些消息? – 2011-05-25 10:52:13
好的,我会将信息更改为INFO,但我认为它不会造成巨大的差异。但感谢您的答案。我已经编辑了一些关于丢失消息 – Erik 2011-05-25 13:27:09
的更多信息,只有logger.debug消息将流向控制台。您使用的是来自记录器的命令? – Jai 2011-05-25 14:06:53