隨筆 - 37  文章 - 14  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          一、Log4j概念:

          Log4j中有三個主要的組件,它們分別是Logger、AppenderLayoutLog4j 允許開發(fā)人員定義多個Logger,每個Logger擁有自己的名字,Logger之間通過名字來表明隸屬關系。有一個Logger稱為Root,它永遠 存在,且不能通過名字檢索或引用,可以通過Logger.getRootLogger()方法獲得,其它Logger通過 Logger.getLogger(String name)方法。
             Appender
          則是用來指明將所有的log信息存放到什么地方,Log4j中支持多種appender,如 console、filesGUI componentsNT Event Loggers等,一個Logger可以擁有多個Appender,也就是你既可以將Log信息輸出到屏幕,同時存儲到一個文件中。
             Layout
          的作用是控制Log信息的輸出方式,也就是格式化輸出的信息。
             Log4j
          中將要輸出的Log信息定義了5種級別,依次為DEBUG、INFO、WARN、ERRORFATAL,當輸出時,只有級別高過配置中規(guī)定的級別的信息才能真正的輸出,這樣就很方便的來配置不同情況下要輸出的內容,而不需要更改代碼

           

          二、Log4j的配置文件

           

          Log4j提供的appender有以下幾種:
            org.apache.log4j.ConsoleAppender
          (控制臺)
            org.apache.log4j.FileAppender
          (文件)
            org.apache.log4j.DailyRollingFileAppender
          (每天產生一個日志文件)
            org.apache.log4j.RollingFileAppender
          (文件大小到達指定尺寸的時候產生新文件)
            org.apache.log4j.WriterAppender
          (將日志信息以流格式發(fā)送到任意指定的地方)
          配置日志信息的格式(布局),其語法為:
            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
          (包含日志信息的級別和信息字符串),
            org.apache.log4j.TTCCLayout
          (包含日志產生的時間、線程、類別等等信息)

           

          配置文件有兩種格式分別是xmlproperty,我只學習了property格式

           

          #root 格式log4j.rootLogger=[level,appenderName,appenderName....],可以有多個appender

          log4j.rootLogger=INFO,A1,R

          #A1輸出方式為控制臺,layout格式可以是自訂的

          log4j.appender.A1=org.apache.log4j.ConsoleAppender

          log4j.appender.A1.layout=org.apache.log4j.PatternLayout

          log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

           

          #R1輸出方式為文件大小到達500KB的時候產生新文件,layout格式可以是自訂的

          log4j.appender.R=org.apache.log4j.RollingFileAppender

          log4j.appender.R.File=petstorlog4j.txt

          log4j.appender.R.MaxFileSize=500KB

          log4j.appender.R.MaxBackupIndex=1

          log4j.appender.R.layout=org.apache.log4j.PatternLayout

          log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n

           

          三、在WEB應用系統(tǒng)中注冊Log4j(如果系統(tǒng)本身加入spring就不需要這一步驟)

          創(chuàng)建一個初始化log4jservlet如下創(chuàng)建一個名為“log4jInit”,并在init()方法里添加

           

                public void init() {

                      String prefix =  getServletContext().getRealPath("/");

                  //取得web.xmlsevelt傳遞的參數(shù)props的值,該參數(shù)指定log4j.properties//件的路徑

                      String file = getInitParameter("props");

                      // if the log4j-init-file is not set, then no point in trying

                      System.out.println("................log4j start");

                      if(file != null) {

                        PropertyConfigurator.configure(prefix+file);

                      }

                    }

           

          WEB.xml里的配置如下

            <servlet>

              <servlet-name>log4jInit</servlet-name>

              <servlet-class>com.petstor.servlet.log4jInit</servlet-class>

              <init-param>

              <param-name>props</param-name>

              <param-value>log4j.properties</param-value>

              </init-param>

          <!—在服務器啟動是,加載該servlet;并且只加載一次-->

              <load-on-startup>1</load-on-startup>

            </servlet>

           

          四、在程序中使用Log4j

          要在自己的類中使用Log4j,首先聲明一個靜態(tài)變量Logger logger=Logger.getLog("classname");在使用之前,用PropertyConfigurator.configure ("配置文件")配置一下,現(xiàn)在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一個小例子:

              import com.foo.Bar;
              import org.apache.log4j.Logger;
              import org.apache.log4j.PropertyConfigurator;
              public class MyApp {
              static Logger logger = Logger.getLogger(MyApp.class.getName());
              public static void main(String[] args) {
                // BasicConfigurator replaced with PropertyConfigurator.
                PropertyConfigurator.configure(args[0]);
                logger.info("Entering application.");
                Bar bar = new Bar();
                bar.doIt();
                logger.info("Exiting application.");
                 }
              }

           

          posted on 2007-05-29 09:39 扭曲的鉛筆 閱讀(346) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 龙川县| 孟村| 根河市| 菏泽市| 乌什县| 高碑店市| 思茅市| 炉霍县| 拉萨市| 浑源县| 山阴县| 宜兴市| 平阳县| 古丈县| 双牌县| 昌邑市| 嘉义县| 通海县| 镇远县| 商丘市| 庐江县| 乐亭县| 曲松县| 金门县| 都匀市| 东山县| 长寿区| 绥芬河市| 沿河| 柏乡县| 宿松县| 岑巩县| 穆棱市| 富民县| 门源| 新竹县| 湖口县| 玉山县| 溧水县| 晋城| 秀山|