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

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          相關鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          一、Log4j概念:

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

           

          二、Log4j的配置文件

           

          Log4j提供的appender有以下幾種:
            org.apache.log4j.ConsoleAppender
          (控制臺)
            org.apache.log4j.FileAppender
          (文件)
            org.apache.log4j.DailyRollingFileAppender
          (每天產生一個日志文件)
            org.apache.log4j.RollingFileAppender
          (文件大小到達指定尺寸的時候產生新文件)
            org.apache.log4j.WriterAppender
          (將日志信息以流格式發送到任意指定的地方)
          配置日志信息的格式(布局),其語法為:
            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應用系統中注冊Log4j(如果系統本身加入spring就不需要這一步驟)

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

           

                public void init() {

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

                  //取得web.xmlsevelt傳遞的參數props的值,該參數指定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,首先聲明一個靜態變量Logger logger=Logger.getLog("classname");在使用之前,用PropertyConfigurator.configure ("配置文件")配置一下,現在就可以使用了,用法如下: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 扭曲的鉛筆 閱讀(342) 評論(0)  編輯  收藏 所屬分類: J2EE
          主站蜘蛛池模板: 化德县| 南皮县| 无锡市| 瑞丽市| 大港区| 安乡县| 德安县| 东海县| 阜康市| 富宁县| 三明市| 乡宁县| 石阡县| 武鸣县| 兴安盟| 嵩明县| 吉林市| 安阳市| 杂多县| 乌拉特中旗| 峡江县| 沾益县| 金秀| 柘城县| 陆河县| 安塞县| 武强县| 兴化市| 阜阳市| 黑山县| 全椒县| 凤城市| 维西| 宽甸| 任丘市| 庆城县| 邵阳县| 绥滨县| 永靖县| 华坪县| 洪泽县|