Vincent.Chan‘s Blog

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          網(wǎng)站

          最新評(píng)論

          log4j配置簡(jiǎn)要說明

          雖然以前一直在用log4j,但是對(duì)其配置不甚了了,突然間因?yàn)樾杞鉀Q某些問題,要理解log4j的配置,
          然而用google搜了一下,卻發(fā)現(xiàn)網(wǎng)上沒有一個(gè)簡(jiǎn)單直觀的說明,于是只好看log4j的官方介紹,終于
          理解了log4j的配置用法,以下是我對(duì)log4j配置的一點(diǎn)認(rèn)識(shí),如有謬誤還請(qǐng)不吝賜教.

          首先我們搞清楚log4j能干什么,簡(jiǎn)單來說就是提供一個(gè)記錄不同級(jí)別信息內(nèi)容的日志工具,
          可以把不同級(jí)別,不同包路徑的信息,以指定格式輸出到多種設(shè)備(控制臺(tái),文件等)
          在程序中,可以以以下方式來使用
          ?? Log log = org.apache.commons.logging.LogFactory.LogFactory.getLog(yourClassName.class);
          ? log.debug("debug message -------------------");
          ? log.info("info message ******************");
          ? log.warn("warn message +++++++++++++++");
          ? log.error("error msg=================");
          ?
          本文主要講的是如何配置log4j,先讓我們先看看一個(gè)典型的log4j配置:?

          ==========log4j.properties==================

          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n

          log4j.appender.fileout=org.apache.log4j.RollingFileAppender
          log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
          log4j.appender.fileout.MaxFileSize=10000KB
          log4j.appender.fileout.MaxBackupIndex=10
          log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
          log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

          log4j.rootCategory=INFO, stdout, fileout
          log4j.logger.com.wolfsquare.log2=DEBUG,stdout
          ===================================

          這個(gè)文件可以劃為三小塊

          ===========第一塊定義了一個(gè)名為 stdout 的appender和layout (appender,layout的概念后面再解釋,目前先記著有這樣兩個(gè)名詞):

          log4j.appender.stdout=org.apache.log4j.ConsoleAppender
          定義stdout的實(shí)際輸出實(shí)現(xiàn)類,從這個(gè)appender實(shí)現(xiàn)類名可以猜到,這個(gè)類是負(fù)責(zé)控制臺(tái)輸出的。
          log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
          定義stdout的輸出裝飾器
          log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd HH\:mm\:ss.SSS} %-5p [%F\:%L]%x %m%n
          裝飾器參數(shù)配置


          ============第二塊定義了一個(gè)名為 fileout 的appender和layout:
          log4j.appender.fileout=org.apache.log4j.RollingFileAppender
          同理可猜這個(gè)實(shí)現(xiàn)類是輸出到文件的
          log4j.appender.fileout.File=D:/workspace/log4jtest/log/application.log
          log4j.appender.fileout.MaxFileSize=10000KB
          log4j.appender.fileout.MaxBackupIndex=10
          log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
          log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n

          ============第三塊定義了名字分別為rootCategory,log4j.logger.com.wolfsquare.log2的兩個(gè)logger
          log4j.rootCategory=INFO, stdout, fileout
          log4j.logger.com.wolfsquare.log2=DEBUG,stdout

          rootCategory logger是缺省的logger,記錄所有的包的信息輸出。
          第二個(gè)logger是只輸出指定包c(diǎn)om.wolfsquare.log2下的日志信息。
          那么INFO,DEBUG又是什么意思呢,他們是信息的分級(jí)標(biāo)識(shí),通過繼承實(shí)現(xiàn)這個(gè)實(shí)現(xiàn)自定義級(jí)別的分級(jí)。
          第三塊配置兩句的意思是這樣的:
          rootCategory 把所有類的INFO級(jí)別以上的信息輸出到stdout和fileout兩個(gè)appender中,
          logger.com.wolfsquare.log2,把com.wolfsquare.log2包中的所有類(包括子包)DEBUG級(jí)別(含)以上的信息輸出到stdout 中
          一個(gè)logger可以輸出到很多個(gè)設(shè)備中(appender),如果需要增加輸出設(shè)備則用分號(hào)分隔開appender名稱即可。

          輸出信息的分類級(jí)別是DEBUG > INFO > WARN > ERROR,信息細(xì)節(jié)由細(xì)到粗,指定輸出某一級(jí)別的信息時(shí),
          過細(xì)的信息輸出將會(huì)被忽略

          如果一個(gè)配置中有多個(gè)logger,他們之間會(huì)有什么關(guān)系呢?答案是,在輸出上,他們沒有任何關(guān)系,都是獨(dú)立運(yùn)作的,
          不相關(guān)的,但是在配置上,父包的配置會(huì)傳給子包,如果子包沒有另外定義配置的話。
          例如上面配置文件中的兩個(gè)logger:
          log4j.logger.com.wolfsquare
          log4j.logger.com.wolfsquare.log2

          這里認(rèn)為 log4j.logger.com.wolfsquare.log2 繼承自 log4j.logger.com.wolfsquare,他們的配置聲明如下:
          log4j.rootCategory=INFO, stdout, fileout
          log4j.logger.com.wolfsquare.log2=,stdout
          注意第二句沒有指定輸出級(jí)別,那么根據(jù)配置繼承規(guī)則會(huì)繼承父logger的配置,在這里就是INFO。

          同時(shí)需要強(qiáng)調(diào)的是,如果兩個(gè)logger有繼承關(guān)系,且輸出到同一個(gè)appender,根據(jù)輸出獨(dú)立原則,那么將會(huì)出現(xiàn)兩行一樣的信息,
          例如上面的兩個(gè)logger定義會(huì)導(dǎo)致這樣的情況。
          最后以一幅圖來概括:

          posted on 2006-04-21 00:11 Vincent.Chen 閱讀(256) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 华坪县| 伊金霍洛旗| 焉耆| 广安市| 甘洛县| 建阳市| 连南| 合江县| 庄浪县| 桂林市| 花莲市| 老河口市| 宝坻区| 大安市| 钟祥市| 尚义县| 县级市| 黄石市| 宜兰县| 凤翔县| 顺昌县| 团风县| 龙海市| 东兴市| 张家口市| 长葛市| 鲁甸县| 张家界市| 唐河县| 通榆县| 黔南| 南丹县| 北安市| 正安县| 建阳市| 子洲县| 汝州市| 莎车县| 济阳县| 阜城县| 建昌县|