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

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

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

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關鏈接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

    一、Log4j概念:

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

     

    二、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 扭曲的鉛筆 閱讀(341) 評論(0)  編輯  收藏 所屬分類: J2EE
    主站蜘蛛池模板: 日韩a在线观看免费观看| 久久久久久免费视频| 亚洲国产成人久久笫一页| 亚洲高清国产拍精品熟女| 日本免费v片一二三区| 亚洲av乱码中文一区二区三区| 国产精品成人免费综合| 色婷婷亚洲一区二区三区| 免费a级毛片18以上观看精品| 狼人大香伊蕉国产WWW亚洲| 国产免费av片在线无码免费看| 看全免费的一级毛片| 久久精品国产亚洲5555| 国产真人无码作爱视频免费| 久久久久久久久亚洲| 亚洲精品视频免费在线观看| 亚洲六月丁香婷婷综合| 日本免费一区二区三区最新vr| 人人爽人人爽人人片av免费 | 一日本道a高清免费播放| 国产亚洲日韩一区二区三区| 久久青草91免费观看| 2017亚洲男人天堂一| 亚洲欧洲国产成人综合在线观看 | 国产亚洲精aa成人网站| 99re6在线精品视频免费播放| 亚洲av成人一区二区三区| 日韩一级在线播放免费观看| 国产精品美女久久久免费 | 羞羞视频免费网站含羞草| 亚洲一区二区三区影院| 久久亚洲欧美国产精品| 久久精品国产亚洲Aⅴ香蕉| 91成人在线免费观看| 亚洲精品GV天堂无码男同| 国产综合精品久久亚洲| 免费福利在线播放| 有色视频在线观看免费高清在线直播| 亚洲综合日韩中文字幕v在线| 国产精品免费综合一区视频| 在线人成免费视频69国产|