Vincent.Chan‘s Blog

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          網(wǎng)站

          最新評(píng)論

          學(xué)習(xí)log4j筆記

          log4j,字面意思就是針對(duì)j(Java)的日志。
          log4j,可以記錄顯示Java程序運(yùn)行的每一步的數(shù)據(jù),相當(dāng)于System.out.print,不過(guò),它是以一個(gè)日志文件顯示所標(biāo)識(shí)的運(yùn)行信息,不用在java運(yùn)行顯示臺(tái)上看輸出信息,比較方面。
          log4j,記錄的數(shù)據(jù),可以作為判斷程序運(yùn)行狀態(tài)的重要依據(jù),更多的應(yīng)是查找程序運(yùn)行BUG的重要依據(jù),特別是程序已發(fā)布,不能做單步調(diào)試的情況下,它的優(yōu)越性就突顯出來(lái)了。
          引用一個(gè)對(duì)log4j的功能比較專(zhuān)業(yè)的描述:

          1、監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析工作;
          2、跟蹤代碼運(yùn)行時(shí)軌跡,作為日后審計(jì)的依據(jù);
          3、擔(dān)當(dāng)集成開(kāi)發(fā)環(huán)境中的調(diào)試器的作用,向文件或控制臺(tái)打印代碼的調(diào)試信息。

          以前偶爾的用過(guò)幾次,但一次沒(méi)形成習(xí)慣和一套良好的應(yīng)用機(jī)制,自咎主要原因是對(duì)log4j掌握的還是不夠,亟待提升。

          今天就花時(shí)間找些資源研究研究。

          在網(wǎng)上搜到一些文章,首先看的是IBM中國(guó)網(wǎng)站上的一篇技術(shù)文章(http://www-128.ibm.com/developerworks/cn/java/l-log4j/index.html)講得比較基礎(chǔ),也很詳細(xì),對(duì)log4j的使用講得全面而貼切,甚利于初次學(xué)習(xí),發(fā)表日期是2002/6/19(有點(diǎn)早)。

          1、去網(wǎng)站(http://logging.apache.org/log4j/docs/download.html)下載log4j的jar包,直接下載log4j-1.2.13版鏈接:http://mirror.vmmatrix.net/apache/logging/log4j/1.2.13/logging-log4j-1.2.13.zip;
          2、解開(kāi)log4j.jar文件放到web應(yīng)用程序的WEB-INF/lib下面;
          3、編寫(xiě)文件名為log4j.properties 配置文件到j(luò)ava源文件的根目錄中;
          4、在自己的程序中構(gòu)建日志記錄器;
          5、利用記錄器標(biāo)識(shí)要輸入的信息。

          第二步如果是在java的一般應(yīng)用程序中應(yīng)用log4j,則在環(huán)境變量CLASSPATH中添加一個(gè)指向log4j.jar的值。
          第三步把命名為log4j.properties的log4j配置文件放在java源文件目錄中是一個(gè)簡(jiǎn)潔的辦法,可以在程序中自定義的指定log4j的配置文件,配置文件名稱(chēng)和存放路徑都可自定義。

          當(dāng)獲得了日志記錄器之后,第二步將配置Log4j環(huán)境,其語(yǔ)法為: 
          BasicConfigurator.configure (): 自動(dòng)快速地使用缺省Log4j環(huán)境。 
          PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫(xiě)的配置文件。 
          DOMConfigurator.configure ( String filename ) :讀取XML形式的配置文件。

          Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性文件(鍵=值)。下面引用的是使用Java特性文件做為配置文件的方法(不用XML解析器):

          配置根Logger,其語(yǔ)法為: 
          log4j.rootLogger = [ level ] , appenderName, appenderName, …

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

          log4j.appender.appenderName.option = valueN其中,Log4j提供的appender有以下幾種: 
          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ā)送到任意指定的地方) 
          配置日志信息的格式(布局),其語(yǔ)法為: 
          log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
          log4j.appender.appenderName.layout.option1 = value1

          log4j.appender.appenderName.layout.option = valueN其中,Log4j提供的layout有以下幾種: 
          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)別等等信息) 

          下面是一個(gè)log4j配置文件的例子(內(nèi)容不含前面的行號(hào)):
           1log4j.rootLogger=INFO, A1 , R
           2
           3log4j.appender.A1=org.apache.log4j.ConsoleAppender 
           4log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
           5log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n 
           6
           7log4j.appender.R=org.apache.log4j.RollingFileAppender
           8log4j.appender.R.File=$TOMCAT_HOME/logs/log4j.log
           9##將$TOMCAT_HOME換成tomcat的安裝目錄,也可以指定一個(gè)存在的任意目錄
          10log4j.appender.R.MaxFileSize=100KB
          11log4j.appender.R.MaxBackupIndex=1
          12log4j.appender.R.layout=org.apache.log4j.PatternLayout
          13log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n


          第1行的值INFO,表示輸出INFO級(jí)以上的日志,如果設(shè)成OFF則表示不輸出,A1和R是自定義的兩種輸出方式(可以自定義n種輸出方式),其詳細(xì)內(nèi)容在后面有定義;
          第3行定義A1是輸出到控制臺(tái);
          第7行定義R是輸出到文件,并且控制文件在指定大小,超過(guò)指定大小自動(dòng)按指定形式創(chuàng)建一個(gè)新名稱(chēng)的日志文件;

          一般是以指定格式的文本輸出日志,輸出比較快捷,也可以定義HTML格式的日志輸出,閱讀方便,但稍微有點(diǎn)慢。

          現(xiàn)在,可以象使用System.out.println一樣標(biāo)識(shí)程序輸出信息了看一個(gè)在程序中應(yīng)用log4j的簡(jiǎn)單例子。
          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;
          import org.apache.log4j.SimpleLayout;
          import org.apache.log4j.FileAppender;
          public class simpandfile {
              //獲取log4j日志記錄器
             
          static Logger logger = Logger.getLogger(simpandfile.class);
             
          public static void main(String args[]) {
                 //新建一個(gè)日志輸出樣式
                SimpleLayout layout 
          = new SimpleLayout();

                FileAppender appender 
          = null;
                
          try {
                     //定義輸出文件
                   appender 
          = new FileAppender(layout,"output1.txt",false);
                }
           catch(Exception e) {}

                logger.addAppender(appender);
                 //設(shè)置日志輸出等級(jí)為DEBUG
                logger.setLevel((Level) Level.DEBUG);
                //以各種等級(jí)標(biāo)識(shí)輸出信息
                logger.debug(
          "Here is some DEBUG");
                logger.info(
          "Here is some INFO");
                logger.warn(
          "Here is some WARN");
                logger.error(
          "Here is some ERROR");
                logger.fatal(
          "Here is some FATAL");
             }

          }

          如果定義了log4j的輸出配置文件,在程序中獲取日志記錄器后就可以直接標(biāo)識(shí)日志輸出信息。

          [***] 在判斷DEBUG/INFO級(jí)別的信息是否要加入日志文件前,記錄器提供isDebugEnabled()/isInfoEnabled()方法判斷當(dāng)前級(jí)別是否激活,這樣處理減少日志處理信息時(shí)再判斷當(dāng)前級(jí)別是否激活消耗的資源,提高運(yùn)行性能。

          posted on 2006-02-13 18:19 Vincent.Chen 閱讀(251) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java

          主站蜘蛛池模板: 团风县| 黄大仙区| 武穴市| 丁青县| 凤冈县| 涿州市| 海南省| 津南区| 盱眙县| 长岭县| 十堰市| 淮阳县| 民权县| 遂昌县| 巴彦县| 隆林| 洛隆县| 岳阳市| 松桃| 随州市| 平山县| 桂东县| 和林格尔县| 新余市| 同德县| 南平市| 久治县| 休宁县| 剑阁县| 东乌珠穆沁旗| 裕民县| 明光市| 城口县| 墨竹工卡县| 郧西县| 贵南县| 治多县| 共和县| 日喀则市| 靖远县| 甘德县|