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

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

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

    posts - 325,  comments - 25,  trackbacks - 0
     

    1.      介紹

    1.1.      Log4j 是什么?

    Log4jApache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,能夠更加細致地控制日志的生成過程,而這些可以通過一個配置文件來靈活地進行配置,不需要修改應用的代碼。

    1.2.      構成Log4j三大類組件

    (1) Logger : 負責輸出信息日志信息,并能夠對日志信息過濾,確定哪些日志信息輸出,哪些信息被忽略。

    (2) Appender : 指定日志輸出到什么地方,可以是控制臺、文件或網絡設備等等。

    (3) Layouts : 加在Appender后面用以實現格式化輸出日志的內容。

    2. Log4j的設置

    第一步:加入log4jjarlib下。

    第二步:在CLASSPATH下建立log4j.properties或XML格式的配置文件。

    第三步:導入所有需的commongs-logging類:
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;

    第四步:在自己的類中定義一個org.apache.commons.logging.Log類的私有靜態類成員:
    private final Log log = LogFactory.getLog(getClass());
    LogFactory.getLog()
    方法的參數使用的是當前類的class

    步:使用org.apache.commons.logging.Log類的成員方法輸出日志信息:

    例如:if (log.isDebugEnabled())
    {log.debug("Test log4j!");}

    3. Log4j的配置文件

    3.1 Log4j輸出日志信息的優先級

    Log4j輸出日志信息的級別OFFFATALERRORWARNINFODEBUGALL或者自定義的級別。Log4j建議只使用四個級別,優先級從高到低分別是ERRORWARNINFODEBUG。通過在這里定義的級別,可以控制到應用程序中相應級別的日志信息的開關。比如在這里定義了INFO級別,只有等于及高于這個級別的才進行處理,則應用程序中所有DEBUG級別的日志信息將不被打印出來。ALL:打印所有的日志,OFF:關閉所有的日志輸出。

    3.2 Log4j配置文件的詳細介紹

    Log4j支持兩種配置文件格,一種是XML格式的文件,一種是Java特性文件log4j.properties(鍵=值)。下面將介紹使用log4j.properties文件作為配置文件的方法:

    ①、              配置根Logger
    Logger
    負責處理日志記錄的大部分操作。
    其語法為:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …
    其中,level 是日志記錄的優先級

    ②、              配置日志信息輸出目的地 Appender
    Appender
    負責控制日志記錄操作的輸出。
    其語法為:
    log4j.appender.appenderName = fully.qualified.name.of.appender.class
    log4j.appender.appenderName.option1 = value1

    log4j.appender.appenderName.optionN = valueN
    這里的appenderName為在①里定義的,可任意起名。
    其中,Log4j提供的appender有以下幾種:
    org.apache.log4j.ConsoleAppender
    (控制臺),
    org.apache.log4j.FileAppender
    (文件),
    org.apache.log4j.DailyRollingFileAppender
    (每天產生一個日志文件),
    org.apache.log4j.RollingFileAppender
    (文件大小到達指定尺寸的時候產生一個新的文件),可通過log4j.appender.R.MaxFileSize=100KB設置文件大小,還可通過log4j.appender.R.MaxBackupIndex=1設置為保存一個備份文件。
    org.apache.log4j.WriterAppender
    (將日志信息以流格式發送到任意指定的地方)
    例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    定義一個名為stdout的輸出目的地,ConsoleAppender為控制臺。
    ③、配置日志信息的格式(布局)Layout
    Layout
    負責格式化Appender的輸出。
    其語法為:
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    log4j.appender.appenderName.layout.option1 = value1

    log4j.appender.appenderName.layout.optionN = valueN
    其中,Log4j提供的layout有以下幾種:
    org.apache.log4j.HTMLLayout
    (以HTML表格形式布局),
    org.apache.log4j.PatternLayout
    (可以靈活地指定布局模式),
    org.apache.log4j.SimpleLayout
    (包含日志信息的級別和信息字符串),
    org.apache.log4j.TTCCLayout
    (包含日志產生的時間、線程、類別等等信息)

    格式化日志信息

    Log4J采用類似C語言中的printf函數的打印格式格式化日志信息,打印參數如下:
    %m
    輸出代碼中指定的消息
    %p
    輸出優先級,即DEBUGINFOWARNERRORFATAL
    %r
    輸出自應用啟動到輸出該log信息耗費的毫秒數
    %c
    輸出所屬的類目,通常就是所在類的全名
    %t
    輸出產生該日志事件的線程名
    %n
    輸出一個回車換行符,Windows平臺為“rn”,Unix平臺為“n
    %d
    輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:20021018 221028921
    %l
    輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
    4.Logger組件的繼承性

    Log4j中定義的Logger可以有繼承關系,Log4j提供了一個root Logger,它是所有Logger的”根”,其它的Logger都會繼承root Logger.Logger 之間的繼承關系是通過名稱體現的,例如:log4j.logger.helloappLogger.childLogger的名稱是在log4j.logger.helloappLogger之后加符號“.”定義的,則childLogger繼承helloappLogger.

    Logger組件的繼承關系有以下特點:

         如果子Logger沒有定義日志級別,則繼承父Logger的日志級別。

         如果子Logger定義了日志級別,則不會繼承父Logger的日志級別。

          默認情況,子Logger會繼承Logger的所有Appender,反它們加入到自己的Appender中。

     

    附錄 A Log4j配置相對路徑實現日志記錄

    Log4j配置相對路徑實現日志記錄有三種辦法:

    ①、              用相代替絕對

    log4jFileAppender本身就有這樣的機制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log其中${WORKDIR}/個變量,System Property中的WORKDIR代替。這樣,我就可以在log4j配置文件之前,先用System.setProperty置好根路

    ②、             可以使用環境變量

    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina.base}/logs/logs_tomcat.log
    log4j.appender.R.MaxFileSize=10KB

    ③、             采用了動態改變日志路徑方法來實現相對路徑保存日志文件

    代碼:

    public class Log4jInit extends HttpServlet {   

         static Logger logger = Logger.getLogger(Log4jInit.class);     

         public Log4jInit() {        }   

         public void init(ServletConfig config) throws ServletException     {   

    String prefix = config.getServletContext().getRealPath("/");       String file = config.getInitParameter("log4j");   

     String filePath = prefix + file;  

     Properties props = new Properties();   

             try {   

              FileInputStream istream = new FileInputStream(filePath);   

                  props.load(istream);   

                  istream.close();   

                  String logFile = prefix + props.getProperty("log4j.appender.file.File");//設置路徑   

                 props.setProperty("log4j.appender.file.File",logFile);                

             PropertyConfigurator.configure(props);//裝入log4j配置信息   

            } catch (IOException e) {   

      toPrint("Could not read configuration file [" + filePath + "].");   toPrint("Ignoring configuration file [" + filePath + "].");                return;            }   

        }   

        public static void toPrint(String content) {   

        System.out.println(content);   

        }   

       }   

    (2).Web.xml中的配置

    代碼

    1. <servlet>       
    2.   <servlet-name>log4j-init</servlet-name>       
    3.   <servlet-class>Log4jInit</servlet-class>  
    4.   <init-param>  
    5.     <param-name>log4j</param-name>  
    6.     <param-value>WEB-INF/classes/log4j.properties</param-value>        
    7.   </init-param>       
    8.     <load-on-startup>1</load-on-startup>  
    </servlet>
    posted on 2008-06-01 14:11 長春語林科技 閱讀(4937) 評論(0)  編輯  收藏 所屬分類: utiljava
    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

     

    長春語林科技歡迎您!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产99视频精品免费观看7| 亚洲精品GV天堂无码男同| 一个人看的www免费高清| 国产美女做a免费视频软件| 亚洲乱码一区av春药高潮| 亚欧在线精品免费观看一区 | 免费观看美女裸体网站| 亚洲中字慕日产2020| 国产99视频精品免费观看7| 亚洲日韩精品无码专区| 国产色婷婷精品免费视频| 香港经典a毛片免费观看看| 免费中文字幕在线观看| 草久免费在线观看网站| 亚洲色大成网站www永久一区| 久久免费观看视频| 亚洲成a人片77777老司机| 无码精品国产一区二区三区免费| 久久精品a亚洲国产v高清不卡 | 国产一区二区三区在线免费| 免费高清A级毛片在线播放| 在线亚洲精品自拍| 午夜精品免费在线观看| 亚洲国产系列一区二区三区| 免费人成在线观看网站品爱网日本| 四虎影视久久久免费观看| 亚洲av无码国产精品夜色午夜| 亚洲黄色免费网站| 精品无码专区亚洲| 亚洲性猛交XXXX| 青青青国产在线观看免费网站| 性色av极品无码专区亚洲| 中文字幕中韩乱码亚洲大片| 免费国产黄网站在线观看可以下载 | 日本免费人成视频在线观看| 亚洲色欲色欱wwW在线| 亚洲人成无码www久久久| 日本一卡精品视频免费| 国产精品亚洲二区在线| 精品亚洲成a人片在线观看| 国产高清视频在线免费观看|