<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 扭曲的鉛筆 閱讀(342) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 全免费a级毛片免费看不卡| 精品国产污污免费网站aⅴ | 久久国产乱子伦精品免费不卡| 无码不卡亚洲成?人片| 丰满亚洲大尺度无码无码专线| 暖暖免费高清日本一区二区三区| 亚洲人成77777在线观看网| 18禁免费无码无遮挡不卡网站| 亚洲youjizz| 午夜免费福利影院| 日本亚洲中午字幕乱码| 亚洲国产成人精品女人久久久| 国产乱妇高清无乱码免费| 国产亚洲婷婷香蕉久久精品 | 免费无码AV片在线观看软件| 国产精品亚洲午夜一区二区三区| 在线精品免费视频| 日本精品久久久久久久久免费 | 国产成人免费AV在线播放| 亚洲国产精品婷婷久久| 99久久久国产精品免费无卡顿| 亚洲激情视频图片| 亚洲AV无码乱码在线观看| 国精产品一区一区三区免费视频| 亚洲系列国产精品制服丝袜第| 9久9久女女免费精品视频在线观看| 亚洲精品动漫免费二区| av在线亚洲欧洲日产一区二区| 免费污视频在线观看| 国产成人精品日本亚洲直接| 国产免费小视频在线观看| 国产成人无码区免费内射一片色欲 | 亚洲一级在线观看| 免费人成激情视频| 男女午夜24式免费视频| 亚洲免费福利在线视频| 国产亚洲综合久久系列| 久久精品免费一区二区| 视频一区在线免费观看| 亚洲AV无码一区二区三区系列| 成人看的午夜免费毛片|