1. 程式人生 > >log4j配置輸出到多個日誌文件

log4j配置輸出到多個日誌文件

基準 方式 ref err logfile otl sni targe file

通常我們項目裏,有一些重要的日誌想單獨的輸出到指定的文件,而不是全總輸出到系統的日誌文件中。那麽我們log4j為我們提供了這種功能,以下我們來一步一步看是怎麽做的。這裏以property的配置方式寫。xml方式類似,想了解的,能夠看官方文檔。

這裏測試的項目包結構例如以下:

技術分享

log4j 主要由三部分組成:Loggers, Appenders 和Layouts,(appender 能夠理解為輸出的目的地)

咱們的log4j.properties或log4j.xml 裏能夠配置多個logger,

每一個logger 能夠相應多個Appender,而appender和layout是一一相應的。

以下看最簡單的配置,我們配置系統rootLogger,例如以下:

當中: 1、log4j.rootLogger 這個的配置三模式為:log4j.rootLogger=level,appender1,appender2,... level為日誌等級。關系如:DEBUG < INFO < WARN < ERROR < FATAL,等級越小能夠輸出比自己大的日誌,如設置為debug,能夠輸出warn,error,等的日誌。 而緊跟在後面的是appender列表:appender1,appender2,... 2、log4j.appender.A_console=org.apache.log4j.ConsoleAppender 指定相應的appender類,這是輸出到控制臺。 3、log4j.appender.A_console.layout=org.apache.log4j.PatternLayout 。指定layout類, 4、log4j.appender.A_console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 輸出格式化。詳細怎麽使用能夠查詢PatternLayout 這個api。 我們用一個main方法輸出來看看日誌打印效果
配置多個appener的情況 每一個logger能夠相應多個appender,例如以下配置: 這樣。當我們遠行App時,日誌會辦出到控制臺和mylog.log日誌文件,這是就不再貼出來了。 配置多個logger 情況 當我們須要對一些重要的日誌進行抽取時,或系統中比較獨立的模塊,如專門與外部系統對接的接口。這時我們就能夠配置多個logger,而實現日誌分柝。便於我們的日常維護工作。

我們以下在原來的基礎上再添加兩個logger ,分別為:“com.pt.test” 和“com.pt.test.intf”,命名都是用包名來定義的,看看具體的配置吧:

我們註意到:新添加的兩個logger 配置為: log4j.logger.com.pt.test=debug,A_file2 日誌輸出到:D:/test/logfile2.log log4j.logger.com.pt.test.intf=debug,A_file3 日誌輸出到:D:/test/logfile3.log 我們看看三個文件的日誌輸出內容: logfile1.log logfile2.log logfile3.log 這時我們會發現,filelog1,filelog2,filelog3都有打印了日誌內容,細心的朋友應該會發現,filelog1裏包括了filelog2裏的全部內容,默認情況下,子Logger會的日誌會向全部父級的appender輸出,假設我們不想要這種輸出那麽我們能夠把相應的Looger的additivity屬性設置為false就能夠了,如:把第17行凝視打開log4j.additivity.com.pt.test=false 這樣,rootLogger就不會再有Logger "com.pt.test" 及其子包裏的日誌了。 滾動生成日誌文件的兩種模式: 1、使用 RollingFileAppender 。這樣的模式為以大小為基準生成日誌文件,配置maxFileSize來限定每一個文件大小,當超出指定大小,系統會自己主動生成下一個文件, 如以下面所看到的的appender: 2、使用DailyRollingFileAppender ,這樣的模式是按時間來分割文件。能夠細每種生成一個文件如: log4j.appender.A_r_date.datePattern=‘.‘yyyy-MM-dd-HH-mm‘.log‘ 表示每分鐘就會生成一個日誌文件如: rollFiledate.log.2014-07-12-14-09.log rollFiledate.log.2014-07-12-14-10.log 假設想配置每天一個日誌文件則能夠:log4j.appender.A_r_date.datePattern=‘.‘yyyy-MM-dd‘.log‘ web 項目中使用log4j 我把僅僅要把寫好的log4j.properties 放到src文件夾下就能夠了。 參考資料:http://logging.apache.org/log4j/1.2/manual.html

log4j配置輸出到多個日誌文件