轉載,原文網址: http://blog.csdn.net/wud_jiyanhui/article/details/6213443java
系統日誌的概念及做用web
日誌系統做爲一種應用程序服務,對於跟蹤調試、程序狀態記錄、崩潰數據恢復都有着重要的做用
apache
經常使用Java日誌系統編程
Log4J服務器
最先的Java日誌框架之一,由Apache基金會發起,提供靈活而強大的日誌記錄機制。app
JDK1.4 LoggingFramework框架
繼Log4J以後,JDK標準委員會將Log4J的基本思想吸取到JDK當中,在JDK1.4中發佈了第一個日誌框架接口。函數
CommonsLoggingFramwork佈局
提供了統一的調用接口和配置方法,使得Java項目可以在Log4J和JDK1.4lLoggingFramework的使用上隨意進行切換
ui
Log4J的應用
Log4J是Apache的一個開源項目,經過使用Log4J,咱們能夠控制日誌信息輸送的目的地,輸出格式,經過設置日誌信息的級別還能夠細緻地控制日誌的生成過程.Log4j有三個主要的組件:Loggers(記錄器),Appenders(輸出源)和Layouts(佈局),這裏可簡單理解爲日誌類別,日誌要輸出的地方和日誌以何種形式輸出。綜合使用這三個組件能夠輕鬆的記錄信息的類型和級別,並能夠在運行時控制日誌輸出的樣式和位置
Log4J三個核心概念
公共類 Logger 負責處理日誌記錄的大部分操做。
公共接口 Appender 負責控制日誌記錄的輸出。
公共抽象類 Layout 負責格式化Appender的輸出
1.Logger日誌記錄器是日誌處理的核心組件
2種特別級別,ALL OFF
這裏「是否可用」的意思是可否輸出Logger信息。
在對Logger實例進行命名時,沒有限制,能夠取任意本身感興趣的名字。通常狀況下建議以類的所在位置來命名Logger實例,這是目前來說比較有效的Logger命名方式。這樣可使得每一個類創建本身的日誌信息,便於管理。
好比:
2.Appender控制日誌輸出的位置
Log4j日誌系統容許把日誌輸出到不一樣的地方,如控制檯(Console)、文件(Files)、根據天數或者文件大小產生新的文件、以流的形式發送到其它地方等等。其語法表示爲:
org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
SMTPAppender 發送郵件
SocketAppender 遠程日至服務器 發送日誌事件 loggingEvent 對象
配置時使用方式爲:
log4j.appender.appenderName=fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1=value1
…log4j.appender.appenderName.option=valueN
也能夠本身實現Appender接口, 這樣就爲日誌的輸出提供了至關大的便利。
3.Layout:格式化輸出日誌信息
Appender必須使用一個與之相關聯的 Layout,這樣才能知道怎樣格式化輸出日誌信息
Log4j具備三種類型的Layout
HTMLLayout
格式化日誌輸出爲HTML表格
PatternLayout
根據指定的轉換模式格式化日誌輸出
SimpleLayout
以一種很是簡單的方式格式化日誌輸出
使用配置文件配置Log4j
log4j.xml配置文件
log4j.properties配置文件
一般,咱們都提供一個名爲 log4j.properties的文件,在第一次調用到Log4J時,Log4J會在類路徑(../web-inf/class/固然也能夠放到其它任 何目錄,只要該目錄被包含到類路徑中便可)中定位這個文件,並讀入這個文件完成的配置。這個配置文件告訴Log4J以什麼樣的格式、把什麼樣的信息、輸出 到什麼地方。
二、Appenders
三、Layouts
有時用戶但願根據本身的喜愛格式 化本身的日誌輸出。Log4j能夠在Appenders的後面附加Layouts來完成這個功能。Layouts提供了四種日誌輸出樣式,如HTML樣 式、自由指定樣式、包含日誌級別與信息的樣式和包含日誌時間、線程、類別等信息的樣式等等。
其語法表示爲:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等信息)
配置時使用方式爲:
log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1=value1
log4j.appender.appenderName.layout.option=valueN
log4j基本編程方法
以上是從原理方面說明Log4j的使用方法,在具體Java編程使用Log4j能夠參照如下示例:
一、創建Logger實例:
語法表示:publicstaticLoggergetLogger(Stringname)
實際使用:staticLoggerlogger=Logger.getLogger(ServerWithLog4j.class.getName());
二、讀取配置文件:
得到了Logger的實例以後,接下來將配置Log4j使用環境:
語法表示:
BasicConfigurator.configure():自動快速地使用缺省Log4j環境。
PropertyConfigurator.configure(StringconfigFilename):讀取使用Java的特性文件編寫的配置文件。
DOMConfigurator.configure(Stringfilename):讀取XML形式的配置文件。
實際使用:
PropertyConfigurator.configure("ServerWithLog4j.properties");
三、插入日誌信息
完成了以上連個步驟之後,下面就能夠按日誌的不一樣級別插入到你要記錄日誌的任何地方了。
語法表示:
Logger.debug(Objectmessage);//調試信息
Logger.info(Objectmessage);//通常信息
Logger.warn(Objectmessage);//警告信息
Logger.error(Objectmessage);//錯誤信息
Logger.fatal(Objectmessage);//致命錯誤信息
實際使用:
logger.info("ServerSocketbeforeaccept:"+server);
4.log4j配置文件
在實際編程時,要使Log4j真 正在系統中運行事先還要對配置文件進行定義。定義步驟就是對Logger、Appender及Layout的分別使用。Log4j支持兩種配置文件格式, 一種是XML格式的文件,一種是javaproperties(key=value)【Java特性文件(鍵=值)】。
-----------------------------------------------------------------------------------------
打印參數: Log4J採用相似C語言中的printf函數的打印格式格式化日誌信息,以下:
%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,一般就是所在類的全名
%t 輸出產生該日誌事件的線程名
%n 輸出一個回車換行符,Windows平臺爲「/r/n」,Unix平臺爲「/n」
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy MMM dd HH:mm:ss , SSS},輸出相似:2002年10月18日 22 : 10 : 28 , 921
%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java: 10 )