log4j配置參數詳解——按日誌文件大小、日期切分日誌文件
項目中盡管對log4j有基本的配置,例如按天生成日誌文件以作區分,但如果系統日誌文件過大,則就需要考慮以更小的單位切分或者其他切分方式。下面就總結一下log4j常用的配置參數以及切分日誌的不同方式。
一、基本配置解析
常用配置1:
[java] view plain copy
- #日誌級別,還可以log4j.rootLogger=INFO,file2,file3 指定file2、3的輸出文件
- log4j.rootLogger=info,exception,thread
- #info
- #每一天產生1個日誌文件
- log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
- #定義日誌存放路徑
- log4j.appender.info.File=/usr/tomcat_logs/mailSystem_info.log
- #日誌文件是否追加
- log4j.appender.info.Append=true
- #定義的時間格式,如果時間定義到分鐘(mm)就是每分鐘生成一個日誌文件,而這裏定義的這個格式就是日誌名後綴
- #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-HH-mm 每分鐘
- #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-HH 每小時
- #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd 每天
- #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-a 每半天
- #日誌輸出級別
- log4j.appender.info.Threshold=INFO
- #日誌編碼
- #log4j.appender.file3.Encoding=UTF-8
- #日誌中輸出的日誌的格式
- log4j.appender.info.layout=org.apache.log4j.PatternLayout
- #定義的日誌格式
- log4j.appender.info.layout.ConversionPattern=%t %d %p [%c] - %m%n
[java] view plain copy
- #debug
- log4j.appender.debug=org.apache.log4j.RollingFileAppender
- log4j.appender.debug.File=/usr/tomcat_logs/mailSystem_debug.log
- #設置日誌文件的大小
- log4j.appender.debug.MaxFileSize=100M
- #保存10個備份文件
- log4j.appender.debug.MaxBackupIndex=10
- log4j.appender.debug.Append=true
- log4j.appender.debug.Threshold=DEBUG
- log4j.appender.debug.layout=org.apache.log4j.PatternLayout
- log4j.appender.debug.layout.ConversionPattern=%t %d %p [%c] - %m%n
二、配置核心類解析
CLASS1:DailyRollingFileAppender
在配置1中使用到DailyRollingFileAppender,該類繼承與FileAppender,so that the underlying file is rolled over at a user chosen frequency.
The rolling schedule is specified by the “DatePattern” option。使用這些rolling schedule 需要註意一個前綴問題。例如if the “File” option is set to “/foo/bar.log” and the “DatePattern” set to ‘.‘yyyy-MM-dd ,則到了midnight,the logging file /foo/bar.log will be copied to "/foo/bar.log.2017-01-01",也就是在bar.log文件後添加 ".yyyy-MM-dd"後綴。It is possible to specify monthly, weekly,half-daily, daily,hourly, or minutely rollover schedules.
總共有:
切分類型 |
切分前 |
切分後 |
按月‘.‘yyyy-MM |
/foo/bar.log |
/foo/bar.log.2002-05 |
按周 ‘.‘yyyy-ww |
/foo/bar.log |
/foo/bar.log.2002-23 |
按天 ‘.‘yyyy-MM-dd |
/foo/bar.log |
/foo/bar.log.2002-03-08 default |
半天 ‘.‘yyyy-MM-dd-a |
/foo/bar.log |
/foo/bar.log.2002-03-09-AM |
按時 ‘.‘yyyy-MM-dd-HH |
/foo/bar.log |
/foo/bar.log.2002-03-09-10 |
按分 ‘.‘yyyy-MM-dd-HH-mm |
/foo/bar.log |
/foo/bar.log.2001-03-09-10-22 |
- public DailyRollingFileAppender (Layout layout, String filename,
- String datePattern) throws IOException {
- super(layout, filename, true);
- this.datePattern = datePattern;
- activateOptions();
- }
CLASS2:RollingFileAppender
配置2中使用到另一個類RollingFileAppender,這個類也繼承子FileAppender,用於按照一定的size文件大小,back up 日誌文件。
這個類中起關鍵作用的兩個參數maxFileSize和maxBackupIndex,用於確定每個日誌文件的size大小和備份個數。默認分別為10MB和1.按照設置的index大小,會默認將文件copy to .1,.2等文件後綴進行備份。
CLASS3: PatternLayout
在兩個配置中,均使用PatternLayout和ConventionPattern類,PatternLayout主要用於日誌輸出相關,ConventionPattern用於定義日誌文件的輸出格式。其中ConventionPattern支持多種類型的日誌輸出,如線程信息、類信息,均已%打頭進行配置,詳情如下:
%c
輸出日誌信息所屬的類的全名,例如%c{2},對於com.max.spring.demo,便會輸出spring.demo兩級類信息。
%d 輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyy-MM-dd HH:mm:ss },輸出類似:2002-10-18- 22:10:28
%f 輸出日誌信息所屬的類的類名
%l 輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
%m 輸出代碼中指定的信息,如log(message)中的message
%n 輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n”
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推
%r 輸出自應用啟動到輸出該日誌信息所耗費的毫秒數
%t 輸出產生該日誌事件的線程名
三、切分效果
按照日期切分日誌: 按照文件大小切分日誌:
版權聲明:本文為博主原創文章,未經博主允許不得轉載。 http://blog.csdn.net/Daybreak1209/article/details/54020497
log4j配置參數詳解——按日誌文件大小、日期切分日誌文件