隨筆 - 37  文章 - 14  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關(guān)鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          一、Log4j概念:

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

           

          二、Log4j的配置文件

           

          Log4j提供的appender有以下幾種:
            org.apache.log4j.ConsoleAppender
          (控制臺)
            org.apache.log4j.FileAppender
          (文件)
            org.apache.log4j.DailyRollingFileAppender
          (每天產(chǎn)生一個日志文件)
            org.apache.log4j.RollingFileAppender
          (文件大小到達(dá)指定尺寸的時候產(chǎn)生新文件)
            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
          (包含日志產(chǎn)生的時間、線程、類別等等信息)

           

          配置文件有兩種格式分別是xmlproperty,我只學(xué)習(xí)了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輸出方式為文件大小到達(dá)500KB的時候產(chǎn)生新文件,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應(yīng)用系統(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>

          <!—在服務(wù)器啟動是,加載該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 扭曲的鉛筆 閱讀(343) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 眉山市| 府谷县| 东山县| 方正县| 铜川市| 厦门市| 阿坝县| 武安市| 体育| 多伦县| 东辽县| 灵璧县| 苍山县| 彭州市| 从化市| 开阳县| 边坝县| 邵阳县| 耒阳市| 辉南县| 台南县| 鸡泽县| 玛纳斯县| 蓬安县| 潍坊市| 田阳县| 湘乡市| 贞丰县| 阿城市| 徐汇区| 洪湖市| 大荔县| 康定县| 石门县| 株洲县| 蓝山县| 泗洪县| 正镶白旗| 贵溪市| 凤阳县| 忻州市|