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

    一般咱們項目裏,有一些重要的日誌想單獨的輸出到指定的文件,而不是全總輸出到系統的日誌文件中。那麼咱們log4j爲咱們提供了這種功能,如下咱們來一步一步看是怎麼作的。這裏以property的配置方式寫。xml方式相似,想了解的,可以看官方文檔。html

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

log4j 主要由三部分組成:Loggers, Appenders 和Layouts,(appender 可以理解爲輸出的目的地)apache

我們的log4j.properties或log4j.xml 裏可以配置多個logger,api

每個logger 可以相應多個Appender,而appender和layout是一一相應的。app

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

當中:
一、log4j.rootLogger 這個的配置三模式爲:log4j.rootLogger=level,appender1,appender2,...
level爲日誌等級。關係如:DEBUG < INFO < WARN < ERROR < FATAL,等級越小可以輸出比本身大的日誌,如設置爲debug,可以輸出warn,error,等的日誌。
而緊跟在後面的是appender列表:appender1,appender2,...
二、log4j.appender.A_console=org.apache.log4j.ConsoleAppender 指定相應的appender類,這是輸出到控制檯。
三、log4j.appender.A_console.layout=org.apache.log4j.PatternLayout 。指定layout類,
四、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」,命名都是用包名來定義的,看看具體的配置吧:spa

咱們注意到:新添加的兩個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" 及其子包裏的日誌了。
 滾動生成日誌文件的兩種模式:
 一、使用 RollingFileAppender 。這樣的模式爲以大小爲基準生成日誌文件,配置maxFileSize來限定每個文件大小,當超出指定大小,系統會本身主動生成下一個文件,
如如下面所看到的的appender:
二、使用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文件夾下就可以了。
相關文章
相關標籤/搜索