快速配置log4j,log4j常用參數說明

俗話說,代碼寫的好,日誌輸出少不了;bug改的快,日誌要查看。

可見日誌在開發過程中必不可少,下面整理了一些log4j的常用配置用於大家參考。


一、概念篇:log4j中的五個參數

  1. 日誌記錄器:logger

  2. 根記錄器:rootLogger

  3. 類別:category

  4. 輸出地:appender
    log4j官方定義的 appender 的幾種實現

配置 說明
org.apache.log4j.ConsoleAppender 控制檯輸出
org.apache.log4j.FileAppender 輸出到日誌文件
org.apache.log4j.DailyRollingFileAppender 輸出到日誌文件,每天產生一個新的日誌文件
org.apache.log4j.RollingFileAppender 日誌文件大小到達指定的大小後產生新的文件

Tips:

如果日誌數量量不大,我們可以使用 DailyRollingFileAppender 每天產生一個日誌文件,方便查看。
如果日誌量很大,我們可以使用 RollingFileAppender 來限定每個日誌文件的大小,這樣每天可能會產生多個日誌文件。

  1. 日誌格式化器:layout
    負責日誌以什麼格式輸出,輸出哪些附加信息,有以下幾種選項
選項 說明
org.apache.log4j.HTMLLayout 以HTML表格形式佈局
org.apache.log4j**.PatternLayout 可以靈活地指定佈局模式(最爲常用,最爲推薦)
org.apache.log4j.SimpleLayout 包含日誌信息的級別和信息字符串
org.apache.log4j.TTCCLayout 包含日誌產生的時間、線程、類別等等信息

如果使用 PatternLayout 佈局方式,需要對 ConversionPattern
屬性進行具體的配置

%m 輸出代碼中指定的消息;
%M 輸出打印該條日誌的方法名;
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數;
%c 輸出所屬的類目,通常就是所在類的全名;
%t 輸出產生該日誌事件的線程名;
%n 輸出一個回車換行符,Windows平臺爲"rn”,Unix平臺爲"n”;
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式。
%l 輸出日誌事件的發生位置,及在代碼中的行數;

org.apache.log4j.PatternLayout 配置示例:

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= %p %d{yyyy MMM dd HH:mm:ss,SSS} [%t] %C.%M(%L)>>%m%n

實戰篇:

1. 配置根 Logger

log4j.rootLogger = [ level ] , appenderName, appenderName, …

leve :是日誌記錄的優先級,常用的日誌優先級從高到低有:ERROR、WARN、INFO、DEBUG
appenderName:指日誌信息的輸出目的地,有CONSOLE(控制檯)、ROLLING_FILE (滾動日誌文件)兩種,目的地可以指定多個。

配置示例 說明
log4j.rootLogger=INFO,CONSOLE,ROLLING_FILE 日誌輸出級別爲INFO,輸出到控制檯、日誌文件
log4j.rootLogger=DEBUG,CONSOLE 日誌輸出級別爲DEBUG,輸出到控制檯

2. 配置 CONSOLE

 配置CONSOLE時,所有的配置前面需要加上 log4j.appender.CONSOLE。
 配置首行默認爲:log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
配置屬性項 配置說明
Threshold 指定日誌輸出的最低級別
Target 指定輸出的控制檯
Encoding 指定輸出的字符格式
layout 指定佈局

配置示例:

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=  %p %d{yyyy MMM dd HH:mm:ss,SSS} [%t] %C.%M(%L)>>%m%n

配置示例中是對日誌目的地爲 CONSOLE 做的配置,如果是 ROLLING_FILE ,配置項前面需要變成:log4j.appender.FILE,配置項不變,根據需要完成配置即可。

log4j 完整配置示例:

log4j.rootLogger=INFO,CONSOLE,ROLLING_FILE
log4j.logger.org.springframework.jdbc.core.JdbcTemplate=DEBUG

# Console Appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= aFinanceInterface %p %d{yyyy MMM dd HH:mm:ss,SSS} [%t] %C.%M(%L)>>%m%n

# File Appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.File=logs/aFinance.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.MaxFileSize=10Mb
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ]  %m%n

# Rolling File
#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLING_FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.ROLLING_FILE.Threshold=INFO
log4j.appender.ROLLING_FILE.File=/opt/logs/aBossPayInteface.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} - [ %p ]  %m%n

log4j的配置有 .xml 和 .properties 兩種方式,xml的配置可以更加全面和細化,比如針對不同級別的日誌輸出到不同的文件,而properties在這方面就比較籠統了,多種級別的日誌都輸入到同一個文件,使用起來不是很友好,會感覺日誌比較混亂。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章