Log4j 基本使用方法_第1頁
Log4j 基本使用方法_第2頁
Log4j 基本使用方法_第3頁
Log4j 基本使用方法_第4頁
Log4j 基本使用方法_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Log4j 基本使用方法Log4j 由三個(gè)重要的組件構(gòu)成:日志信息的優(yōu)先級,日志信息的輸出目的地,日志信息的輸出格式。日志信息的優(yōu)先級從高到低有ERROR、WARN、INFO、DEBUG,分別用來指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制臺還是文件中;而輸出格式則控制了日志信息的顯示內(nèi)容。一、定義配置文件其實(shí)您也可以完全不使用配置文件,而是在代碼中配置Log4j 環(huán)境。但是,使用配置文件將使您的應(yīng)用程序更加靈活。Log4j 支持兩種配置文件格式,一種是XML 格式的文件,一種是Java 特性文件(鍵=值)。下面我們介紹使用Java特性文件做為配置文件的方法:1.配置

2、根Logger,其語法為:log4j.rootLogger = level , appenderName, appenderName, 其中,level 是日志記錄的優(yōu)先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者您定義的級別。Log4j 建議只使用四個(gè)級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應(yīng)用程序中相應(yīng)級別的日志信息的開關(guān)。比如在這里定義了INFO 級別,則應(yīng)用程序中所有DEBUG 級別的日志信息將不被打印出來。 appenderName 就是指定日志信息輸出到哪個(gè)地方。您可以同時(shí)指定多

3、個(gè)輸出目的地。2.配置日志信息輸出目的地Appender,其語法為:log4j.appender.appenderName = .of.appender.classlog4j.appender.appenderName.option1 = value1log4j.appender.appenderName.option = valueN其中,Log4j 提供的appender有以下幾種:org.apache.log4j.ConsoleAppender(控制臺),org.apache.log4j.FileAppender(文件),org.apache.lo

4、g4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件),org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件),org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)3.配置日志信息的格式(布局),其語法為:log4j.appender.appenderName.layout=.of.layout.classlog4j.appender.appenderName.layout.option1 = value1log4

5、j.appender.appenderName.layout.option = valueN其中,Log4j 提供的layout有以下幾種:org.apache.log4j.HTMLLayout(以HTML 表格形式布局),org.apache.log4j.PatternLayout(可以靈活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)Log4J 采用類似C 語言中的printf 函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:%m 輸

6、出代碼中指定的消息%p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL%r 輸出自應(yīng)用啟動到輸出該log信息耗費(fèi)的毫秒數(shù)%c 輸出所屬的類目,通常就是所在類的全名%t 輸出產(chǎn)生該日志事件的線程名%n 輸出一個(gè)回車換行符,Windows平臺為“rn”,Unix 平臺為“n”%d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%dyyy MMM dd HH:mm:ss,SSS,輸出類似:2002 年10 月18 日22:10:28,921%l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.mai

7、n(TestLog4.java:10)二、在代碼中使用Log4j1.得到記錄器使用Log4j,第一步就是獲取日志記錄器,這個(gè)記錄器將負(fù)責(zé)控制日志信息。其語法為:public static Logger getLogger( String name)通過指定的名字獲得記錄器,如果必要的話,則為這個(gè)名字創(chuàng)建一個(gè)新的記錄器。Name 一般取本類的名字,比如:static Logger logger=Logger.getLogger ( ServerWithLog4j.class.getName () )2.讀取配置文件當(dāng)獲得了日志記錄器之后,第二步將配置Log4j 環(huán)境,其語法為:BasicConf

8、igurator.configure (): 自動快速地使用缺省Log4j環(huán)境。PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫的配置文件。DOMConfigurator.configure ( String filename ) :讀取XML 形式的配置文件。3.插入記錄信息(格式化日志信息)當(dāng)上兩個(gè)必要步驟執(zhí)行完畢,您就可以輕松地使用不同優(yōu)先級別的日志記錄語句插入到您想記錄日志的任何地方,其語法如下:Logger.debug ( Object message ) ;L ( O

9、bject message ) ;Logger.warn ( Object message ) ;Logger.error ( Object message ) ;log4j使用示例log4j使用示例-by blues()PART 1 介紹log4j的好處在于:1.通過修改配置文件,就可以決定log信息輸出到何處(console,文件,.),是否輸出。這樣,在系統(tǒng)開發(fā)階段可以打印詳細(xì)的log信息以跟蹤系統(tǒng)運(yùn)行情況,而在系統(tǒng)穩(wěn)定后可以關(guān)閉log 輸出,從而在能跟蹤系統(tǒng)運(yùn)行情況的同時(shí),又減少了垃圾代碼(System.out.println(.)等)。2.使用l

10、og4j,需要整個(gè)系統(tǒng)有一個(gè)統(tǒng)一的log機(jī)制,有利于系統(tǒng)的規(guī)劃。log4j的使用本身很簡單。但合理地規(guī)劃一個(gè)系統(tǒng)的統(tǒng)一log機(jī)制需要周全的考慮。其他關(guān)于log4j 的信息參看log4j自帶的文檔。PART II 配置文件詳細(xì)解釋先看一個(gè)配置文件的例子:1.配置文件的例子log4j.rootLogger=DEBUG#將DAO層log記錄到DAOLog,allLog中l(wèi)og4j.logger.DAO=DEBUG,A2,A4#將邏輯層log記錄到BusinessLog,allLog 中l(wèi)og4j.logger.Businesslog=DEBUG,A3,A4#A1-打印到屏幕上log4j.append

11、er.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%-5p %t %37c %3x - %m%n#A2-打印到文件DAOLog 中-專門為DAO層服務(wù)log4j.appender.A2=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A2.file=DAOLoglog4j.appender.A2.DatePatt

12、ern=.yyyy-MM-ddlog4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%-5p %dyyyy-MM-dd HH:mm:ss,SSS method:%l%n%m%n#A3-打印到文件BusinessLog 中-專門記錄邏輯處理層服務(wù)log信息log4j.appender.A3=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A3.file=BusinessLoglog4j.app

13、ender.A3.DatePattern=.yyyy-MM-ddlog4j.appender.A3.layout=org.apache.log4j.PatternLayoutlog4j.appender.A3.layout.ConversionPattern=%-5p %dyyyy-MM-dd HH:mm:ss,SSS method:%l%n%m%n#A4-打印到文件alllog中-記錄所有l(wèi)og 信息log4j.appender.A4=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A4.file=allloglog4j.app

14、ender.A4.DatePattern=.yyyy-MM-ddlog4j.appender.A4.layout=org.apache.log4j.PatternLayoutlog4j.appender.A4.layout.ConversionPattern=%-5p %dyyyy-MM-dd HH:mm:ss,SSS method:%l%n%m%n2.Appender的使用一個(gè)Appender 代表log信息要寫向的一個(gè)地方。log4j可使用的Appender 有很多類型,這里只考慮3種:ConsoleAppender,FileAppender,DailyRollFileAppender2.

15、1 ConsoleAppender如果使用ConsoleAppender,那么log信息將寫到Console。就是直接把信息打印到System.out 上了。2.2 FileAppender使用FileAppender,那么log信息將寫到指定的文件中。這應(yīng)該是比較經(jīng)常使用到的情況。相應(yīng)地,在配置文件中應(yīng)該指定log 輸出的文件名。如下配置指定了log文件名為demo.txtlog4j.appender.A2.File=demo.txt注意將A2 替換為具體配置中Appender 的別名。2.3 DailyRollingAppender使用FileAppender可以將log信息輸出到文件中,

16、但是如果文件太大了讀起來就不方便了。這時(shí)就可以使用DailyRollingAppender。DailyRollingAppender 可以把Log信息輸出到按照日期來區(qū)分的文件中。如下配置文件就會每天產(chǎn)生一個(gè)log文件,每個(gè)log文件只記錄當(dāng)天的log信息:log4j.appender.A2=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A2.file=demolog4j.appender.A2.DatePattern=.yyyy-MM-ddlog4j.appender.A2.layout=org.apache.log4j.Pa

17、tternLayoutlog4j.appender.A2.layout.ConversionPattern=%m%n3.Layout的配置Layout 指定了log 信息輸出的樣式。詳細(xì)信息請查看PatternLayout 的javadoc。例子1:顯示日期和log信息log4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss,SSS %m%n打印的信息是:2002-11-12 11:49:42,866 SELECT

18、 * FROM Role WHERE 1=1 order by createDate desc例子2:顯示日期,log 發(fā)生地方和log信息log4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss,SSS %l # %m%n2002-11-12 11:51:46,313 .unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409) # SELECT *

19、FROM Role WHERE 1=1 order by createDate desc例子3:顯示log級別,時(shí)間,調(diào)用方法,log信息log4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%-5p %dyyyy-MM-dd HH:mm:ss,SSS method:%l%n%m%nlog信息:DEBUG 2002-11-12 12:00:57,376 method:.unet.weboa.system.dao.RoleDAO.select(

20、RoleDAO.java:409)SELECT * FROM Role WHERE 1=1 order by createDate descPART 3 log4j 的使用log4j使用步驟有3個(gè):3.1.根據(jù)配置文件初始化log4j配置文件如PART 2所敘述。現(xiàn)在講的是如何在程序中配置log4j。log4j可以使用3中配置器來初始化:BasicConfigurator ,DOMConfigurator ,PropertyConfigurator這里用的是PropertyConfigurator。使用PropertyConfigurator 適用于所有的系統(tǒng)。如下的語句PropertyCon

21、figurator.configure(perties);就以perties 為配置文件初始化好了log4j環(huán)境。注意一點(diǎn):這個(gè)語句只需要在系統(tǒng)啟動的時(shí)候執(zhí)行一次。例如:在unet webOA項(xiàng)目中可以這么用:在ActionServlet 的init()方法中調(diào)用一次。public class ActionServlet extends HttpServlet./* Initialize global variables*/public void init() throws ServletException / 初始化Action 資源tryinitLog4

22、j();.catch(IOException e)throw new ServletException(Load ActionRes is Error);.protected void initLog4j()PropertyConfigurator.configure(perties);./end class ActionServlet3.2 在需要使用log4j 的地方獲取Logger 實(shí)例如下是RoleDAO 類中的使用例子:static Logger log = Logger.getLogger(DAO);注意這里使用DAO標(biāo)識符,那么對應(yīng)的在配置文件中對應(yīng)的配置信息如

23、下:#定義DAO Loggerlog4j.logger.DAO=DEBUG,A2#設(shè)置Appender A2的屬性log4j.appender.A2=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A2.file=demolog4j.appender.A2.DatePattern=.yyyy-MM-ddlog4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%-5p %dyyyy-MM-dd

24、HH:mm:ss %l%n%m%npublic class RoleDAO extends BaseDBObject.static Logger log = Logger.getLogger(DAO);.public BeanCollection selectAll() throws SQLExceptionStringBuffer sql = new StringBuffer(SQLBUF_LEN);sql.append(SELECT * FROM + tableName + order by roldId);/System.out.println(sql.toString();log.de

25、bug(sql);.3.3 使用Logger對象的debug,info,fatal.方法log.debug(it is the debug info);附件1:log4j的一個(gè)bug當(dāng)這樣使用時(shí),DailyRollingFileAppender不能正確使用:public Class RoleDAO()static Logger log = Logger.getLogger(DAO);/在每一次new RoleDAO 對象的時(shí)候都執(zhí)行一次configure()操作public RoleDAO(TransactionManager transMgr) throws SQLException.Pro

26、pertyConfigurator.configure(perties);.public void select()./使用log4j 進(jìn)行l(wèi)og記錄log.debug(.);.怎么解決:在系統(tǒng)啟動時(shí)執(zhí)行一次PropertyConfigurator.configure(perties);之后就不再執(zhí)行。log4j 使用進(jìn)階二 動態(tài)配置log4j1 配置外部配置文件來配置的基本步驟1.1 一個(gè)運(yùn)用配置文件的實(shí)例Log4j 之所以能成功的原因之一是它的靈活性。但如果只是簡單的調(diào)用BasicConfigurator.configure()來進(jìn)行配置工作,那么所有的

27、配置都是在函數(shù)中寫死的,以后修改配置就要修改原代碼,這就不能體現(xiàn)出log4j 的靈活性了,所以基本上不會通過BasicConfigurator.configure()來進(jìn)行配置工作的。為了增加軟件的靈活性,最常用的做法就是使用配置文件,如web.xml 之于J2EE,struts-config.xml 之于struts 一樣,log4j 也提供了讓我們把配置信息從程序轉(zhuǎn)移到配置文件中的方法。Log4j 提供了兩種方式的配置文件:XML 文件和Java 的property 配置文件。通過把配置信息轉(zhuǎn)移到外部文件中,當(dāng)我們要修改配置信息時(shí),就可以直接修改配置文件而不用去修改代碼了,下面,我們就來完

28、成一個(gè)通過配置文件來實(shí)現(xiàn)log4j的實(shí)例。例2-a:package TestLog4j;import org.apache.log4j.Logger;import org.apache.log4j.BasicConfigurator;import org.apache.log4j.PropertyConfigurator;import org.apache.log4j.Priority; public class TestLog4jstatic Logger logger = Logger.getLogger(TestLog4j.class.getName();public TestLog4j

29、()public static void main(String args)/通過BasicConfigurator 類來初始化/BasicConfigurator.configure();/(1)通過配置文件來初始化PropertyConfigurator.configure(F:perties);logger.debug(Start of the main() in TestLog4j); /代碼(2)(Just testing a log message with priority set to INFO);logger.warn(J

30、ust testing a log message with priority set to WARN);logger.error(Just testing a log message with priority set to ERROR);logger.fatal(Just testing a log message with priority set to FATAL);logger.log(Priority.WARN, Testing a log message use a alternate form);logger.debug(TestLog4j.class.getName(); /

31、代碼(2)在這個(gè)例子中,我們用PropertyConfigurator.configure(F:perties)代替BasicConfigurator.configure()進(jìn)行配置。PropertyConfigurator.configure()函數(shù)的參數(shù)可以是一個(gè)properties 文件所在路徑的String對象,可以是一個(gè)properties文件所在路徑的URL對象,也可以是一個(gè)properties 對象。通過PropertyConfigurator.configure()可以通過指定的properties 文件來配置信息。如果要用XML 文件進(jìn)行信息配

32、置,可以在代碼中調(diào)用DOMConfigurator()函數(shù)來進(jìn)行配置工作。在這里,我們只以properties 文件來完成例子。接著,我們來看一下perties文件中都有些什么東西:例2-b:log4j.rootLogger = DEBUG, A1log4j.appender.A1 = org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout = org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern = %-4r %t %-5p

33、%c %x - %m%n運(yùn)行這個(gè)實(shí)例,運(yùn)行結(jié)果為0 main DEBUG TestLog4j.TestLog4j - Start of the main() in TestLog4j20 main INFO TestLog4j.TestLog4j - Just testing a log message with priority set to INFO20 main WARN TestLog4j.TestLog4j - Just testing a log message with priority set to WARN20 main ERROR TestLog4j.TestLog4j -

34、 Just testing a log message with priority set to ERROR20 main FATAL TestLog4j.TestLog4j - Just testing a log message with priority set to FATAL180 main WARN TestLog4j.TestLog4j - Testing a log message use a alternateform180 main DEBUG TestLog4j.TestLog4j - TestLog4j.TestLog4j下面,我們分析一下這個(gè)配置文件。1) 由于每一個(gè)

35、Logger 對旬都有一個(gè)級別,文件的第一行就是定義了一個(gè)Logger 及其級別。在這里定義了一個(gè)根記錄器(root logger),這涉及到記錄器的層次問題,在些暫時(shí)不深入討論,在后面的章節(jié)再進(jìn)行討論。2) 第二行定義了一個(gè)名為A1 的輸出流,這個(gè)流就是控制臺,所以通過Logger 對象打印的信息會在控制臺輸出。3) 第三行定義了打印信息的布局。在這里我們用PatternLayout作為此記錄器的布局,PatternLayout允許你以靈活的格式來打印信息。4) 第四行指定的打印信息的具體格式,從結(jié)果可知,這個(gè)實(shí)例的打印格式為:當(dāng)前打印語句所使用的時(shí)間 日志所在的線程 打印的級別 當(dāng)前日志所

36、在的類的全名 日志信息?,F(xiàn)在我們來修改一下這個(gè)記錄器的級別,把第一行的DEBUG 改為INFO,再運(yùn)行程序,結(jié)果將變?yōu)椋? main INFO TestLog4j.TestLog4j - Just testing a log message with priority set to INFO10 main WARN TestLog4j.TestLog4j - Just testing a log message with priority set to WARN10 main ERROR TestLog4j.TestLog4j - Just testing a log message with

37、 priority set to ERROR10 main FATAL TestLog4j.TestLog4j - Just testing a log message with priority set to FATAL10 main WARN TestLog4j.TestLog4j - Testing a log message use a alternateform由于這個(gè)Logger的級別變?yōu)镮NFO,而代碼(2)是調(diào)用debug()函數(shù)來輸出日志信息時(shí)只能當(dāng)記錄器級別為DEBUG 時(shí)才輸出信息,所以代碼(2)將不輸出信息。1.2 實(shí)例原理1.2.1 初始化配置信息如果要通過JAVA

38、的properties 文件來配置信息,那么在代碼中就要通過PropertyConfigurator.configure()函數(shù)從properties 文件中加載配置信息,這個(gè)函數(shù)有三種參數(shù)形式:一個(gè)properties 文件所在路徑的String 對象,可以是一個(gè)properties 文件所在路徑的URL 對象,也可以是一個(gè)properties 對象。如果要用XML 文件來配置信息,則可用類型的DOMConfigurator()函數(shù)來從一個(gè)XML 文件中加載配置信息。1.2.2 輸出端Appender在上面的例子中,我們都是簡單的把日志信息輸出到控制臺中。其實(shí)在log4j中還可以把日志信息輸

39、出到其它的輸出端,對于同一個(gè)日志信息,我們還可以讓它同時(shí)輸出到多個(gè)輸出端中,如同時(shí)在控制臺和文件中進(jìn)行打印。一個(gè)輸出端就是一個(gè)appender。要在配置文件中定義一個(gè)appender 有三步:1) 在定義一個(gè)記錄器的同時(shí)定義出該記錄器的輸出端appender。在例2 的配置文件的第一句log4j.rootLogger = DEBUG, A1 中,我們定義了一個(gè)根記錄器,它的級別為DEBUG,它有一個(gè)appender名為A1。定義根記錄器的格式為log4j.rootLogger = level , appendName1, appendName2, appendNameN。同一個(gè)記錄器可有多個(gè)輸

40、出端。2) 定義appender 的輸出目的地。定義一個(gè)appender 的輸出目的地的格式為log4j.appender.appenderName = .of.appender.class。log4j 提供了以下幾種常用的輸出目的地:org.apache.log4j.ConsoleAppender,將日志信息輸出到控制臺org.apache.log4j.FileAppender,將日志信息輸出到一個(gè)文件org.apache.log4j.DailyRollingFileAppender,將日志信息輸出到一個(gè),并且每天輸出到一個(gè)新的日志文件org.apac

41、he.log4j.RollingFileAppender,將日志信息輸出到一個(gè)文件,通過指定文件的的尺寸,當(dāng)文件大小到達(dá)指定尺寸的時(shí)候會自動把文件改名,如名為example.log 的文件會改名為example.log.1,同時(shí)產(chǎn)生一個(gè)新的example.log 文件。如果新的文件再次達(dá)到指定尺寸,又會自動把文件改名為example.log.2,同時(shí)產(chǎn)生一個(gè)example.log文件。依此類推,直到example.log. MaxBackupIndex,MaxBackupIndex的值可在配置文件中定義。org.apache.log4j.WriterAppender,將日志信息以流格式發(fā)送到任

42、意指定的地方。org.apache.log4j.jdbc.JDBCAppender,通過JDBC把日志信息輸出到數(shù)據(jù)庫中。在例2 中,log4j.appender.A1 = org.apache.log4j.ConsoleAppender 定義了名為A1的appender的輸出目的地為控制臺,所以日志信息將輸出到控制臺。3) 定義與所選的輸出目的地相關(guān)的參數(shù),定義格式為:log4j.appender.appenderName.optionName1 = value1log4j.appender.appenderName.optionNameN = valueN其中一個(gè)最常用的參數(shù)layout

43、將在下面介紹。1.2.3 輸出格式(布局)layout通過appender可以控制輸出的目的地,而如果要控制輸出的格式,就可通過log4j的layout 組件來實(shí)現(xiàn)。通過配置文件定義一個(gè)appender的輸出格式,也通常需要兩個(gè)步驟:1) 定義appender 的布局模式。定義一個(gè)appender 的布局模式的格式為log4j.appender.appenderName.layout = .of.layout.class。Log4j 提供的布局模式有以下幾種:? org.apache.log4j.HTMLLayout,以HTML 表格形式布局? org.

44、apache.log4j.PatternLayout,可以靈活地指定布局模式? org.apache.log4j.SimpleLayout,包含日志信息的級別和信息字符串在例2 中l(wèi)og4j.appender.A1.layout = org.apache.log4j.PatternLayout 定義了名為A1的appender的布局模式為PatternLayout。2) 定義與所選的布局模式相關(guān)的設(shè)置信息,定義格式為:log4j.appender.appenderName.layout.optionName1 = value1log4j.appender.appenderName.layout

45、.optionNameN = valueN選擇了不同的布局模式可能會有不同的設(shè)置信息。實(shí)例2 所選的布局模式PatternLayout 的一個(gè)PatternLayout為ConversionPattern ,通過定義這個(gè)PatternLayout的值,我們可以指定輸出信息的輸出格式。在例2 的配置文件中的定義如下log4j.appender.A1.layout.ConversionPattern = %-4r %t %-5p %c %x - %m%n。在下面,我們將介紹布局模式PatternLayout的參數(shù)ConversionPattern的各個(gè)值代表的含義。1.2.4 Conversion

46、Pattern 參數(shù)的格式含義格式名 含義%c 輸出日志信息所屬的類的全名%d 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%dyyy-MM-dd HH:mm:ss ,輸出類似:2002-10-18- 22:10:28%f 輸出日志信息所屬的類的類名%l 輸出日志事件的發(fā)生位置,即輸出日志信息的語句處于它所在的類的第幾行%m 輸出代碼中指定的信息,如log(message)中的message%n 輸出一個(gè)回車換行符,Windows平臺_為“rn”,Unix平臺為“n”%p 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL。如果是調(diào)用de

47、bug()輸出的,則為DEBUG,依此類推%r 輸出自應(yīng)用啟動到輸出該日志信息所耗費(fèi)的毫秒數(shù)%t 輸出產(chǎn)生該日志事件的線程名1.3 定義多個(gè)輸出目的地的實(shí)例從上面的實(shí)例原理中我們已經(jīng)知道,同一個(gè)日志信息可以同時(shí)輸出到多個(gè)輸出目的地,在這個(gè)例子中,我們將實(shí)現(xiàn)一個(gè)把日志信息同時(shí)輸出到控制器、一個(gè)文件中的實(shí)例和數(shù)據(jù)庫中。這個(gè)實(shí)例的Java 代碼我們沿用例2 中的代碼,我們只需修改配置文件即可。這也體現(xiàn)了log4j 的靈活性。例3-a:create table log4j(logID int primary key identity,message varchar(1024),priority var

48、char(10),milliseconds int,category varchar(256),thread varchar(100),NDC varchar(256),createDate datetime,location varchar(256),caller varchar(100),method varchar(100),filename varchar(100),line int)例3-b:#1 定義了兩個(gè)輸出端log4j.rootLogger = INFO, A1, A2,A3#2 定義A1輸出到控制器log4j.appender.A1 = org.apache.log4j.Co

49、nsoleAppender#3 定義A1的布局模式為PatternLayoutlog4j.appender.A1.layout = org.apache.log4j.PatternLayout#4 定義A1的輸出格式log4j.appender.A1.layout.ConversionPattern = %-4r %t %-5p %c - %m%n#5 定義A2輸出到文件log4j.appender.A2 = org.apache.log4j.RollingFileAppender#6 定義A2要輸出到哪一個(gè)文件log4j.appender.A2.File = F:nepalonclasses

50、example3.log#7 定義A2的輸出文件的最大長度log4j.appender.A2.MaxFileSize = 1KB#8 定義A2的備份文件數(shù)log4j.appender.A2.MaxBackupIndex = 3#9 定義A2的布局模式為PatternLayoutlog4j.appender.A2.layout = org.apache.log4j.PatternLayout#10 定義A2的輸出格式log4j.appender.A2.layout.ConversionPattern = %dyyyy-MM-dd hh:mm:ss:%p %t%c - %m%n#11區(qū) 定義A3輸

51、出到數(shù)據(jù)庫log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppenderlog4j.appender.A3.BufferSize = 40log4j.appender.A3.Driver = com.microsoft.jdbc.sqlserver.SQLServerDriverlog4j.appender.A3.URL = jdbc:microsoft:sqlserver:/:1433;DatabaseName=nepalonlog4j.appender.A3.User = salog4j.appender.A3.Passwor

52、d =log4j.appender.A3.layout = org.apache.log4j.PatternLayoutlog4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j (createDate,thread, priority, category, message) values(getdate(), %t, %-5p, %c,%m)配置文件中的6、7、8 行顯示了輸出端為RollingFileAppender 的特有參數(shù)及其運(yùn)用的方法。11 區(qū)顯示了輸出端為JDBCAppender 的特有參數(shù)及其運(yùn)用方法。在這著重講

53、解一下6、7、8 行的作用。6 行指定日志信息輸出到哪個(gè)文件,7 行指定日志文件的最大長度,最后要詳細(xì)介紹8 行。第8行的參數(shù)是設(shè)置備份文件的個(gè)數(shù)的參數(shù),在這里我們設(shè)置為3,表示最多有3個(gè)備份文件,具體作用為:1) 當(dāng)example3.log文件的大小超過K時(shí),就把文件改名為example3.log.1,同時(shí)生成一個(gè)新的example3.log文件2) 當(dāng)example3.log 文件的大小再次超過1K,又把文件改名為example3.log.1。但由于此時(shí)example3.log.1 已存在,則先把example3.log.1 更名為example3.log.2,再把example3.log

54、文件改名為example3.log.13) 同理,當(dāng)example3.log 文件的大小再次超過1K,先把example3.log.2 文件更名為example3.log.3,把example3.log.1 文件更名為example3.log.2,再把example3.log文件改名為example3.log.14) 當(dāng)example3.log文件的大小再次超過1K,先把example3.log.2 文件更名為example3.log.3,舊的example3.log.3 文件將被覆蓋;把example3.log.1 文件更名為example3.log.2,舊的example3.log.2 文

55、件被覆蓋;最后把example3.log 文件改名為example3.log.1并覆蓋掉舊的example3.log.1文件。運(yùn)行結(jié)果將分為兩部分在控制器中:0 main INFO TestLog4j.TestLog4j - Just testing a log message with priority set to INFO11 main WARN TestLog4j.TestLog4j - Just testing a log message with priority set to WARN21 main ERROR TestLog4j.TestLog4j - Just testing

56、 a log message with priority set to ERROR 21 main FATAL TestLog4j.TestLog4j - Just testing a log message with priority set to FATAL21 main WARN TestLog4j.TestLog4j - Testing a log message use a alternateform在文件example3.log 中:2003-12-18 04:23:02:INFO main TestLog4j.TestLog4j - Just testing a log message with priority set to INFO2003-12-18 04:23:02:WARN main TestLog4j.TestLog4j - Just testing a log message with priority set to WARN2003-12-18 04:23:02:ERROR main TestLog4j.TestLog4j -

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論