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


    通常我們項目里,有一些重要的日志想單獨的輸出到指定的文件,而不是全總輸出到系統的日志文件中。那么我們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文件夾下就能夠了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM