log4j 日誌等級分爲五級:web
等級 | 說明 |
---|---|
DEBUG | 調試(細粒度)。 |
INFO | 應用程序的運行過程(粗粒度)。 |
WARN | 可能存在潛在錯誤。 |
ERROR | 發生錯誤事件,但不影響系統運行。 |
FATAL | 發生嚴重錯誤事件,致使系統退出。 |
通常只使用到前四種。apache
咱們但願這樣管理日誌: 一、日誌放在 logs/web/ 下。 二、日誌文件分爲 debug.log、info.log 以及 error.log。 三、每小時生成一份日誌文件。 四、debug.log 包含全部級別日誌。 五、info.log 包含除 debug 以外的全部級別日誌。 六、error.log 包含 ERROR、FATAL 日誌。bash
配置文件 xxx.xml,放置在 classes/
:app
<?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>
複製代碼
輸出器 | 說明 |
---|---|
ConsoleAppender | 控制檯。 |
FileAppender | 文件。 |
RollingFileAppender | 文件,當文件大小達到必定閾值時,自動備份。 |
DailyRollingFileAppender | 文件,可設置按期備份策略。 |
WriterAppender | 將日誌信息以流格式發送到指定位置。 |
格式 | 說明 |
---|---|
%c | 輸出日誌信息所屬的類的全名 |
%d | 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy-MM-dd HH:mm:ss },輸出相似:2002-10-18- 22:10:28 |
%f | 輸出日誌信息所屬的類的類名 |
%l | 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行 |
%m | 輸出代碼中指定的信息,如log(message)中的message |
%n | 輸出一個回車換行符,Windows平臺爲「/r/n」,Unix平臺爲「/n」 |
%p | 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。若是是調用debug()輸出的,則爲DEBUG,依此類推 |
%r | 輸出自應用啓動到輸出該日誌信息所耗費的毫秒數 |
%t | 輸出產生該日誌事件的線程名 |
DailyRollingFileAppender 中能夠設置日誌生成的時間頻度(DatePattern),格式以下:ui
時間頻度 | 格式 |
---|---|
每個月 | yyyy-MM |
每週 | yyyy-ww |
天天 | yyyy-MM-dd |
每半天 | yyyy-MM-dd-a |
每小時 | yyyy-MM-dd-HH |
每分鐘 | yyyy-MM-dd-HH-mm |
形如:spa
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'"/>
複製代碼
注意: 一、不在表中的字符,必須寫在
''
之間。 二、必須遵循操做系統文件夾的命名規範。操作系統
若是不遵照這些規則,但是會靜默失敗的哦O(∩_∩)O~線程
每個 appender,均可以配置一個 LevelRangeFilter(日誌等級過濾器),來指定須要輸出的日誌範圍。debug
參數 | 說明 |
---|---|
levelMin | 最低等級 |
levelMax | 最高等級 |
等級可選值爲:OFF、FATAL、ERROR、WARN、、INFO、DEBUG、TRACE、ALL。調試
可使用 ${catalina.base}
來指定 Tomcat 的根目錄。