Log4j配置與使用方法

          Posted on 2009-06-17 16:48 eric_xu 閱讀(517) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): J2EE

          Log4j可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件等。

          Log4j由三個(gè)重要的組件構(gòu)成:日志信息的優(yōu)先級(jí),日志信息的輸出目的地,日志信息的輸出格式。日志信息的優(yōu)先級(jí)從高到低有ERRORWARNINFODEBUG,分別用來(lái)指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制臺(tái)還是文件中;而輸出格式則控制了日志信息的顯示內(nèi)容。

           

          Loggers

          Logger的定義格式:log4j.[loggername]=[level],appenderName,appenderName,…

          這里level是指Logger的優(yōu)先級(jí),appenderName是日志信息的輸出地,可以同時(shí)定義多個(gè)輸出地。

          Appenders

          Appender的定義格式:log4j.appender.appenderName = fully.qualified.name.of.appender.class  

          Appender類(lèi)及其作用列表

          Appender類(lèi)名

          作用

          org.apache.log4j.ConsoleAppender

          將日志輸出到控制臺(tái)

          org.apache.log4j.FileAppender

          將日志輸出到文件

          org.apache.log4j.DailyRollingFileAppender

          每天產(chǎn)生一個(gè)日志文件

          org.apache.log4j.RollingFileAppender

          文件大小到達(dá)指定尺寸時(shí)產(chǎn)生一個(gè)新的文件

          org.apache.log4j. WriterAppender

          將日志信息以流格式發(fā)送到任意指定的地方

           

          1ConsoleAppender選項(xiàng)

          -Threshold=WARN:指定日志消息的輸出最低層次。

          -ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。

          -Target=System.err:默認(rèn)情況下是:System.out,指定輸出控制臺(tái)。

           

          2FileAppender 選項(xiàng)

          -Threshold=WARN:指定日志消息的輸出最低層次。

          -ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。

          -File=mylog.txt:指定消息輸出到mylog.txt文件。

          - Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。

           

          3DailyRollingFileAppender 選項(xiàng)

          -Threshold=WARN:指定日志消息的輸出最低層次。

          -ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。

          -File=mylog.txt:指定消息輸出到mylog.txt文件。

          -Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。

          -DatePattern='.'yyyy-ww:每周滾動(dòng)一次文件,即每周產(chǎn)生一個(gè)新的文件。當(dāng)然也可以指定按月、周、天、時(shí)和分。即對(duì)應(yīng)的格式如下:

          '.'yyyy-MM: 每月

          '.'yyyy-ww: 每周 

          '.'yyyy-MM-dd: 每天

          '.'yyyy-MM-dd-a: 每天兩次

          '.'yyyy-MM-dd-HH: 每小時(shí)

          '.'yyyy-MM-dd-HH-mm: 每分鐘

           

          4RollingFileAppender 選項(xiàng)

          -Threshold=WARN:指定日志消息的輸出最低層次。

          -ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。

          -File=mylog.txt:指定消息輸出到mylog.txt文件。

          - Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。

          -MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達(dá)該大小時(shí),將會(huì)自動(dòng)滾動(dòng),即將原來(lái)的內(nèi)容移到mylog.log.1文件。

          -MaxBackupIndex=2:指定可以產(chǎn)生的滾動(dòng)文件的最大數(shù)。

          Layouts

          Layout的定義格式:

          部分一 log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

                        //"fully.qualified.name.of.layout.class" 可以指定下面4個(gè)格式中的一個(gè):

          Layout類(lèi)及其作用列表

          Layout類(lèi)名

          org.apache.log4j.HTMLLayout

          HTML表格形式布局

          org.apache.log4j.PatternLayout

          可以靈活地指定布局模式

          org.apache.log4j.SimpleLayout

          包含日志信息的級(jí)別和信息字符串

          org.apache.log4j.TTCCLayout

          包含日志產(chǎn)生的時(shí)間、線(xiàn)程、類(lèi)別等等信息

           

          1HTMLLayout 選項(xiàng)

          -LocationInfo=true:默認(rèn)值是false,輸出java文件名稱(chēng)和行號(hào)。

          -Title=my app file: 默認(rèn)值是 Log4J Log Messages

           

          2PatternLayout 選項(xiàng)

          - ConversionPattern=%m%n :指定怎樣格式化指定的消息。

           

          3XMLLayout  選項(xiàng)

          -LocationInfo=true:默認(rèn)值是false,輸出java文件和行號(hào)。

           

          部分二 log4j.appender.A1.layout.ConversionPattern=

          %-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

          這里需要說(shuō)明的就是日志信息格式中幾個(gè)符號(hào)所代表的含義:

          1)-X號(hào): X信息輸出時(shí)左對(duì)齊。

          2%p: 輸出日志信息優(yōu)先級(jí),即DEBUGINFOWARNERRORFATAL

          3%d: 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類(lèi)似:20021018 221028921

          4%r: 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)。

          5%c: 輸出日志信息所屬的類(lèi)目,通常就是所在類(lèi)的全名。

          6%t: 輸出產(chǎn)生該日志事件的線(xiàn)程名。

          7%l: 輸出日志事件的發(fā)生位置,相當(dāng)于%C.%M(%F:%L)的組合,包括類(lèi)目名、發(fā)生的線(xiàn)程,以及在代碼中的行數(shù)。舉例:Testlog4.main(TestLog4.java:10)

          8%x: 輸出和當(dāng)前線(xiàn)程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶(hù)多線(xiàn)程的應(yīng)用中。

          9%%: 輸出一個(gè)"%"字符。

          10%F: 輸出日志消息產(chǎn)生時(shí)所在的文件名稱(chēng)。

          11 %L: 輸出代碼中的行號(hào)。

          12%m: 輸出代碼中指定的消息,產(chǎn)生的日志具體信息。

          13%n: 輸出一個(gè)回車(chē)換行符,Windows平臺(tái)為"\r\n"Unix平臺(tái)為"\n"輸出日志信息換行。

          可以在%與模式字符之間加上修飾符來(lái)控制其最小寬度、最大寬度、和文本的對(duì)齊方式。如:

          1)%20c:指定輸出category的名稱(chēng),最小的寬度是20,如果category的名稱(chēng)小于20的話(huà),默認(rèn)的情況下右對(duì)齊。

          2)%-20c:指定輸出category的名稱(chēng),最小的寬度是20,如果category的名稱(chēng)小于20的話(huà),"-"號(hào)指定左對(duì)齊。

          3)%.30c:指定輸出category的名稱(chēng),最大的寬度是30,如果category的名稱(chēng)大于30的話(huà),就會(huì)將左邊多出的字符截掉,但小于30的話(huà)也不會(huì)有空格。

          4)%20.30c:如果category的名稱(chēng)小于20就補(bǔ)空格,并且右對(duì)齊,如果其名稱(chēng)長(zhǎng)于30字符,就從左邊交遠(yuǎn)銷(xiāo)出的字符截掉。


          log4j.rootLogger=info, A1
          log4j.appender.A1
          =org.apache.log4j.ConsoleAppender
          log4j.appender.A1.layout
          =org.apache.log4j.PatternLayout
          # Pattern to output the caller
          's file name and line number.
          log4j.appender.A1.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

          Log4j.properties

          第一行,配置log4j.rootLogger。應(yīng)為它是根,必須配置,否則別的Log無(wú)法繼承。其他的Log可以配置也可以不配置。等號(hào)后面的第一個(gè)參數(shù)表示日志級(jí)別,可以填五個(gè)級(jí)別中的一種(Log4j默認(rèn)把日志信息分為五個(gè)等級(jí)debug < info < warn < error < fatal),后面的參數(shù)都是讓Log知道輸出到哪里,如果你想讓日志輸出到兩個(gè)地方就加兩個(gè)輸出參數(shù),比如:

          log4j.rootLogger=DEBUG, CONSOLE, LOGFILE

          這里的DEBUG表示,該Log的日志級(jí)別為DEBUG,所有級(jí)別小于DEBUG的日志都不會(huì)被記錄。這樣就很容易控制什么信息在調(diào)試的時(shí)候要顯示,什么信息在發(fā)布的時(shí)候要去掉。這些都不用改代碼。

               配置CONSOLE,這個(gè)名字是隨便取的,你可以叫它A

          log4j.appender.A=org.apache.log4j.ConsoleAppender

          這里的關(guān)鍵不是名字,而是appender類(lèi)型,比如這里的“ConsoleAppender”,指輸出到Console。后面兩行都是設(shè)置日志格式的。

           

          使用PropertyConfigurator適用于所有的系統(tǒng)。如下的語(yǔ)句。

          PropertyConfigurator.configure("log4j.properties");

          就以log4j.properties為配置文件初始化好了log4j環(huán)境。對(duì)于一般的java project 可以不使用上面的語(yǔ)句初始化log4jlog4j會(huì)自動(dòng)在classpath下,找到配置文件Log4j.properties并初始化。如果log4j不能自動(dòng)初始化配置文件,那么就需要用上面的方法進(jìn)行初始化。

          注意:初始化配置文件,最好只在系統(tǒng)啟動(dòng)的時(shí)候執(zhí)行一次。

          posts - 37, comments - 5, trackbacks - 0, articles - 0

          Copyright © eric_xu

          主站蜘蛛池模板: 安陆市| 辽阳市| 尚义县| 庆城县| 黄陵县| 襄樊市| 长治县| 鹤壁市| 南木林县| 高尔夫| 玉田县| 那坡县| 堆龙德庆县| 东阿县| 淮滨县| 浦北县| 绩溪县| 怀远县| 突泉县| 天津市| 碌曲县| 德格县| 蒙阴县| 镇巴县| 绥宁县| 法库县| 比如县| 武乡县| 山东省| 台湾省| 台山市| 邢台市| 桦甸市| 梧州市| 皮山县| 邳州市| 井冈山市| 宜宾市| 沙雅县| 腾冲县| 伊宁县|