Log4j筆記

Log4j是什麼(log for java)

一個開源的、輕量級的、用於日誌管理的框架:

 Log4j是Apache的一個開放源代碼項目,通過使用Log4j,可以控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器等;也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,能夠更加細緻地控制日誌的生成過程。這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。


能幹嘛

日誌監控打印,在項目試運行期需要記錄用戶所有的操作

添加新的內容,比如時間和線程

程序調試期間,記錄運行的步驟和運行行

成功上線穩定運行後,不再需要打印了

多個日誌的輸出源,比如到數據庫、eclipse控制檯,或者日誌文件到linux服務器下.


去哪下

官網:http://logging.apache.org/

怎麼玩

1. log4j.properties介紹

四個關鍵

目的地【appender】

佈局【layout】

控制單元【logger】

級別【level】

#表示註釋

properties文件對中文支持不好

       用eclipse的propedit插件解決

總結:

以什麼樣的格式,按照日誌的優先級,將日誌輸出到哪?


2. 日誌級別和獲得

哪幾種

 Log4j有如下級別

 1 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。

   Log4j建議只用四個級別分別是ERROR、WARN、INFO、DEBUG。


如何獲得

public class TestXXX

{

   private static final Logger logger = Logger.getLogger(TestXXX.class);}

 2 他們四個的級別:debug<info<warn<error,假如你選擇的級別是info,那就是往後靠,打印出大於等於info級別的全部標註日誌


3. 輸出源Appender


常見Appender,前3個常用

org.apache.log4j.ConsoleAppender(控制檯)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件)

org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)

org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)

org.apache.log4j.jdbc.JDBCAppender(把日誌用JDBC記錄到數據庫中)


 


4. 佈局LayOut

1 佈局就是指輸出信息的格式。在Log4j中稱作Layout



2 常見Layout

org.apache.log4j.HTMLLayout(以HTML表格形式佈局),

org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),

org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),

org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)


5. 常用PatternLayout介紹

%m 輸出代碼中指定的消息

%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL

%r 輸出自應用啓動到輸出該log信息耗費的毫秒數

%c 輸出所屬的類目,通常就是所在類的全名

%t 輸出產生該日誌事件的線程名

%n 輸出一個回車換行符,Windows平臺爲“\r\n”,Unix平臺爲“\n”

%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,

     比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2015-12-20 18:35:51,768




常見的日誌配置信息說明

log4j.appender.(項目名稱).File=org.apacher.log4j.DailyRollingFileAppender(日誌每天輸出)

log4j.appender.(項目名稱).File.file=/var/log

log4j.appender.(項目名稱).File.DatePatten=.yyyy-MM-dd

log4j.appender.(項目名稱).File.layout=org.apacher.log4j.PatternLayout

log4j.appender.(項目名稱).File.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p (%C:%M) -%m%n



log4j.appender.(項目名稱).Console=org.apacher.log4j.ConsoleAppender

log4j.appender.(項目名稱).Console.layout=org.apacher.log4j.PatternLayout

log4j.appender.(項目名稱).Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p (%C:%M) -%m%n


log4j.rootLogger=error,atguigu.File,atguigu.Console

log4j.logger.com.atguigu=debug,atguigu.File,atguigu.Console(用logger的時候就是用包名)

log4j.logger.com.atguigu.dao=debug,atguigu.File,atguigu.Console(用logger的時候就是用包名)

上面的兩個聽誰的呢?

級別看就近,輸出找各自。


6. log4j.properties小總結

Appender、Layout、Logger三者之間的關係

1 每個appender後面必然需要跟隨layout,指定自己的風格樣式

2 每個Logger都可以指定一個級別,同時引用多個Appender

3 每個Appender也同時可以被多個Logger引用


7. log4j.xml


log4j.xml優先於log4j.properties

log4j.xml的優勢

filter精確匹配,避免往後靠的大於等於,可以OnlyOne過濾出我需要的

additivity="false"精確匹配,停止傳播


8. maven中央倉庫的地址

http://search.maven.org/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章