<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 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 扭曲的鉛筆 閱讀(340) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 免费无码又爽又刺激一高潮| 亚洲欧美aⅴ在线资源| 一级全免费视频播放| 四虎影在线永久免费观看| 亚洲AV无码一区二区三区久久精品| 99久久这里只精品国产免费| 亚洲国产超清无码专区| 青草草色A免费观看在线| 国产成人亚洲合集青青草原精品| 一二三四影视在线看片免费| 国产亚洲国产bv网站在线| 在线免费不卡视频| 久久精品国产亚洲AV电影网| 无码不卡亚洲成?人片| 国产特黄一级一片免费| 亚洲第一网站男人都懂| 久久久久久亚洲精品成人| 69视频在线观看免费| 精品久久亚洲中文无码| 日本特黄特色aa大片免费| 视频免费1区二区三区| 亚洲熟女少妇一区二区| 无码国产精品一区二区免费16 | 久久国产精品免费观看| 亚洲视频在线观看地址| 好男人www免费高清视频在线| 男人的天堂av亚洲一区2区| 精品国产人成亚洲区| 91精品国产免费入口| 亚洲国产日韩a在线播放| 国产国拍亚洲精品福利| 日韩精品人妻系列无码专区免费 | 亚洲国产精久久久久久久| 精品久久8x国产免费观看| 亚洲人成未满十八禁网站| 亚洲综合色在线观看亚洲| 久久久久久夜精品精品免费啦| 亚洲三级在线播放| 亚洲免费视频一区二区三区| 精品免费久久久久久久| 日韩色视频一区二区三区亚洲|