我对log4j和slf4j知之甚少。但我想了解实际记录器在下面的情况下是如何工作的。
我有一个Web模块,Service模块和一个Dao模块.Web模块依赖于Service和Service对Dao的依赖。
在我的网络模块中有3个罐子。 slf4j jar,log4j jar和slf4j-log4j12 jar和log4j.xml如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="C:\\temp\\web.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%t] %d{HH:mm:ss,SSS} %-5p %l - %m%n" />
</layout>
</appender>
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<root>
<!--
Set the root logger priority via a system property. Note this is parsed by log4j
-->
<level value="trace" />
<appender-ref ref="CONSOLE"/>
</root>
<logger name="com.mywork">
<level value="DEBUG" />
<appender-ref ref="FILE" />
</logger>
<logger name="org.hibernate">
<level value="ERROR" />
<appender-ref ref="FILE" />
</logger>
<logger name="org">
<level value="ERROR" />
<appender-ref ref="FILE" />
</logger>
</log4j:configuration>
在我的服务模块和dao模块中只包含slf4j jar。并且日志记录详细信息存档。(记录所有模块的详细信息)
hibernate和Spring的记录器是否也可以在我的文件中使用? 如何在记录器文件中提供异常?
谢谢
答案 0 :(得分:1)
您明确约束org。* ERROR
级别。
这有效地消除了几乎所有的休眠和弹簧记录器输出。
但是,使用错误级别记录的异常仍应转到文件日志。
IDE中配置的模块依赖关系无关紧要。记录发生在JBoss容器中,并且仅取决于实际应用程序的运行时类路径。
BTW,我强烈建议对根类别的跟踪级别。 有关说明,请参阅Production settings file for log4j?。