1. 程式人生 > >log4j配置參數詳解——按日誌文件大小、日期切分日誌文件

log4j配置參數詳解——按日誌文件大小、日期切分日誌文件

日誌文件 個數 位置 -h rac windows 基本配置 src index

項目中盡管對log4j有基本的配置,例如按天生成日誌文件以作區分,但如果系統日誌文件過大,則就需要考慮以更小的單位切分或者其他切分方式。下面就總結一下log4j常用的配置參數以及切分日誌的不同方式。

一、基本配置解析

常用配置1:

[java] view plain copy
  1. #日誌級別,還可以log4j.rootLogger=INFO,file2,file3 指定file2、3的輸出文件
  2. log4j.rootLogger=info,exception,thread
  3. #info
  4. #每一天產生1個日誌文件
  5. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
  6. #定義日誌存放路徑
  7. log4j.appender.info.File=/usr/tomcat_logs/mailSystem_info.log
  8. #日誌文件是否追加
  9. log4j.appender.info.Append=true
  10. #定義的時間格式,如果時間定義到分鐘(mm)就是每分鐘生成一個日誌文件,而這裏定義的這個格式就是日誌名後綴
  11. #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-HH-mm 每分鐘
  12. #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-HH 每小時
  13. #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd 每天
  14. #log4j.appender.file3.DatePattern=‘_‘ yyyy-MM-dd-a 每半天
  15. #日誌輸出級別
  16. log4j.appender.info.Threshold=INFO
  17. #日誌編碼
  18. #log4j.appender.file3.Encoding=UTF-8
  19. #日誌中輸出的日誌的格式
  20. log4j.appender.info.layout=org.apache.log4j.PatternLayout
  21. #定義的日誌格式
  22. log4j.appender.info.layout.ConversionPattern=%t %d %p [%c] - %m%n
常用配置2:
[java] view plain copy
  1. #debug
  2. log4j.appender.debug=org.apache.log4j.RollingFileAppender
  3. log4j.appender.debug.File=/usr/tomcat_logs/mailSystem_debug.log
  4. #設置日誌文件的大小
  5. log4j.appender.debug.MaxFileSize=100M
  6. #保存10個備份文件
  7. log4j.appender.debug.MaxBackupIndex=10
  8. log4j.appender.debug.Append=true
  9. log4j.appender.debug.Threshold=DEBUG
  10. log4j.appender.debug.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.debug.layout.ConversionPattern=%t %d %p [%c] - %m%n
配置1采用DailyRollingFileAppender類,可定義日誌按照log4j給定的參數值進行配置,配置2使用RollingFileAppender。兩者都為log4j配置的核心類。在下進行詳細介紹。

二、配置核心類解析

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

[java] view plain copy
  1. public DailyRollingFileAppender (Layout layout, String filename,
  2. String datePattern) throws IOException {
  3. super(layout, filename, true);
  4. this.datePattern = datePattern;
  5. activateOptions();
  6. }
這些參數策略會傳入到DailyRollingFileAppender的初始化方法中,創建一個DailyRollingFileAppender對象。

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配置參數詳解——按日誌文件大小、日期切分日誌文件