1 日志等級
log4j 日志等級分為五級:
等級 | 說明 |
---|---|
DEBUG | 調(diào)試(細粒度)仲义。 |
INFO | 應用程序的運行過程(粗粒度)滥玷。 |
WARN | 可能存在潛在錯誤为狸。 |
ERROR | 發(fā)生錯誤事件,但不影響系統(tǒng)運行。 |
FATAL | 發(fā)生嚴重錯誤事件潘明,導致系統(tǒng)退出行剂。 |
一般只使用到前四種。
2 目標
我們希望這樣管理日志:
1钳降、日志放在 logs/web/ 下厚宰。
2、日志文件分為 debug.log遂填、info.log 以及 error.log铲觉。
3、每小時生成一份日志文件吓坚。
4撵幽、debug.log 包含所有級別日志。
5礁击、info.log 包含除 debug 之外的所有級別日志盐杂。
6、error.log 包含 ERROR客税、FATAL 日志况褪。
3 配置
配置文件 xxx.xml,放置在 classes/
:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<!-- 控制臺日志-->
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]:[%c][%M] \
[%l] [%m] %n"/>
</layout>
</appender>
<!-- DEBUG 級別日志-->
<appender name="debugAppender" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 日志輸出路徑-->
<param name="File" value="${catalina.base}/logs/web/debug.log"/>
<!-- 每小時生成一個新日志-->
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 最低級別-->
<param name="levelMin" value="DEBUG"/>
</filter>
<!-- 日志輸出格式-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
</layout>
</appender>
<!-- INFO 級別日志-->
<appender name="infoAppender" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 日志輸出路徑-->
<param name="File" value="${catalina.base}/logs/web/info.log"/>
<!-- 每小時生成一個新日志-->
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 最低級別-->
<param name="levelMin" value="INFO"/>
</filter>
<!-- 日志輸出格式-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
</layout>
</appender>
<!-- Error 級別日志-->
<appender name="errorAppender" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 日志輸出路徑-->
<param name="File" value="${catalina.base}/logs/web/error.log"/>
<!-- 每小時生成一個新日志-->
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 最低級別-->
<param name="levelMin" value="ERROR"/>
</filter>
<!-- 日志輸出格式-->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p]: [%c][%M][%l] [%m] %n"/>
</layout>
</appender>
<root>
<priority value="debug"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</root>
</log4j:configuration>
4 輸出器
輸出器 | 說明 |
---|---|
ConsoleAppender | 控制臺更耻。 |
FileAppender | 文件。 |
RollingFileAppender | 文件捏膨,當文件大小達到一定閾值時秧均,自動備份。 |
DailyRollingFileAppender | 文件号涯,可設置定期備份策略目胡。 |
WriterAppender | 將日志信息以流格式發(fā)送到指定位置。 |
5 輸出格式
格式 | 說明 |
---|---|
%c | 輸出日志信息所屬的類的全名 |
%d | 輸出日志時間點的日期或時間链快,默認格式為ISO8601誉己,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss }域蜗,輸出類似:2002-10-18- 22:10:28 |
%f | 輸出日志信息所屬的類的類名 |
%l | 輸出日志事件的發(fā)生位置巨双,即輸出日志信息的語句處于它所在的類的第幾行 |
%m | 輸出代碼中指定的信息,如log(message)中的message |
%n | 輸出一個回車換行符霉祸,Windows平臺為“/r/n”筑累,Unix平臺為“/n” |
%p | 輸出優(yōu)先級,即DEBUG丝蹭,INFO慢宗,WARN,ERROR,F(xiàn)ATAL镜沽。如果是調(diào)用debug()輸出的敏晤,則為DEBUG,依此類推 |
%r | 輸出自應用啟動到輸出該日志信息所耗費的毫秒數(shù) |
%t | 輸出產(chǎn)生該日志事件的線程名 |
6 DatePattern
DailyRollingFileAppender 中可以設置日志生成的時間頻度(DatePattern)缅茉,格式如下:
時間頻度 | 格式 |
---|---|
每月 | yyyy-MM |
每周 | yyyy-ww |
每天 | yyyy-MM-dd |
每半天 | yyyy-MM-dd-a |
每小時 | yyyy-MM-dd-HH |
每分鐘 | yyyy-MM-dd-HH-mm |
形如:
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
注意:
1嘴脾、不在表中的字符,必須寫在''
之間宾舅。
2统阿、必須遵循操作系統(tǒng)文件夾的命名規(guī)范。
如果不遵守這些規(guī)則筹我,可是會靜默失敗的哦O(∩_∩)O~
7 LevelRangeFilter
每一個 appender扶平,都可以配置一個 LevelRangeFilter(日志等級過濾器),來指定需要輸出的日志范圍蔬蕊。
參數(shù) | 說明 |
---|---|
levelMin | 最低等級 |
levelMax | 最高等級 |
等級可選值為:OFF结澄、FATAL、ERROR岸夯、WARN麻献、、INFO猜扮、DEBUG勉吻、TRACE、ALL旅赢。
8 日志輸出路徑
可以使用 ${catalina.base}
來指定 Tomcat 的根目錄齿桃。