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/