<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="INFO" />
<param name="File" value="sample.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c{1}] %m %n" />
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="fileAppender" />
</root>
</log4j:configuration>
Log4j可能有点令人困惑。因此,让我们尝试了解此文件中发生了什么:在log4j中,您有两个基本构造附加器和记录器。
追加器定义了追加内容的方式和位置。它会记录到文件、控制台、数据库等吗?在本例中,您指定的是使用布局标记中指定的模式将定向到 fileAppender 的日志语句放入文件中。您可以轻松地为控制台或数据库创建追加器。其中,控制台追加器将指定屏幕上的布局等内容,而数据库追加器将具有连接详细信息和表名称。sample.log
记录器在记录事件冒泡时响应这些事件。如果某个事件引起了特定记录器的兴趣,它将调用其附加的附加器。在下面的示例中,您只有一个记录器,即根记录器 - 默认情况下,它响应所有日志记录事件。除了根记录器之外,您还可以指定更具体的记录器来响应来自特定包的事件。这些记录器可以使用标记指定自己的追加器,或者以其他方式从根记录器继承追加器。使用更具体的记录器可以微调特定包上的日志记录级别,或将某些包定向到其他追加器。appender-ref
所以这个文件说的是:
- 创建一个记录到文件示例的文件应用程序.log
- 将该追加器附加到根记录器。
- 根记录器将响应至少与“调试”级别一样详细的任何事件
- 追加器配置为仅记录至少与“info”一样详细的事件
结果是,如果你的代码中有一个,它将被忽略。A 将输出到采样.log。logger.debug("blah blah")
logger.info("Blah blah");
下面的代码片段可以使用log4j标签添加到上面的文件中。此记录器将从中继承追加器,但会将包中的所有日志记录事件限制为在级别或更高级别记录的事件。<root>
org.springframework
info
<!-- Example Package level Logger -->
<logger name="org.springframework">
<level value="info"/>
</logger>