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

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

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

    隨筆-314  評論-209  文章-0  trackbacks-0
    Log4j由三個重要的組件構(gòu)成:日志信息的優(yōu)先級,日志信息的輸出目的地,日志信息的輸出格式。日志信息的優(yōu)先級從高到低有ERROR、WARN、INFO、DEBUG,分別用來指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制臺還是文件中;而輸出格式則控制了日志信息的顯示內(nèi)容。

      一、定義配置文件

      其實您也可以完全不使用配置文件,而是在代碼中配置Log4j環(huán)境。但是,使用配置文件將使您的應(yīng)用程序更加靈活。Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性文件(鍵=值)。下面我們介紹使用Java特性文件做為配置文件的方法:

      1.配置根Logger,其語法為:

      log4j.rootLogger = [ level ] , appenderName, appenderName, …

      其中,level 是日志記錄的優(yōu)先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應(yīng)用程序中相應(yīng)級別的日志信息的開關(guān)。比如在這里定義了INFO級別,則應(yīng)用程序中所有DEBUG級別的日志信息將不被打印出來。 appenderName就是指定日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。

      2.配置日志信息輸出目的地Appender,其語法為:

      log4j.appender.appenderName = fully.qualified.name.of.appender.class
      log4j.appender.appenderName.option1 = value1
      …
      log4j.appender.appenderName.option = valueN

      其中,Log4j提供的appender有以下幾種:
      org.apache.log4j.ConsoleAppender(控制臺),
      org.apache.log4j.FileAppender(文件),
      org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件),
      org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產(chǎn)生一個新的文件),
      org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)

      3.配置日志信息的格式(布局),其語法為:

      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(包含日志產(chǎn)生的時間、線程、類別等等信息)

    Log4J采用類似C語言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:
    %m 輸出代碼中指定的消息
    %n? 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n”?
    %p? 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL
    %r?? 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)
    %c? 輸出所屬的類目,通常就是所在類的全名
    %t?? 輸出產(chǎn)生該日志事件的線程名
    %d? 輸出日志時間點的日期或時間,默認(rèn)格式為ISO8601,也可以在其后指定格式,
    ??????? 比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
    %l?? 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。
    ??????? 舉例:Testlog4.main(TestLog4.java:10)
    %F? 類目名
    %L? 代碼中的行數(shù)

      二、在代碼中使用Log4j

      1.得到記錄器

      使用Log4j,第一步就是獲取日志記錄器,這個記錄器將負(fù)責(zé)控制日志信息。其語法為:

      public static Logger getLogger( String name)

      通過指定的名字獲得記錄器,如果必要的話,則為這個名字創(chuàng)建一個新的記錄器。Name一般取本類的名字,比如:

      static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )

      2.讀取配置文件

      當(dāng)獲得了日志記錄器之后,第二步將配置Log4j環(huán)境,其語法為:

      BasicConfigurator.configure (): 自動快速地使用缺省Log4j環(huán)境。
      PropertyConfigurator.configure ( String configFilename) :讀取使用Java的特性文件編寫的配置文件。
      DOMConfigurator.configure ( String filename ) :讀取XML形式的配置文件。

      3.插入記錄信息(格式化日志信息)

      當(dāng)上兩個必要步驟執(zhí)行完畢,您就可以輕松地使用不同優(yōu)先級別的日志記錄語句插入到您想記錄日志的任何地方,其語法如下:

      Logger.debug ( Object message ) ;
      Logger.info ( Object message ) ;
      Logger.warn ( Object message ) ;
      Logger.error ( Object message ) ;


    介紹
    命令行參數(shù)解析、應(yīng)用程序配置和日志記錄,作為一個應(yīng)用程序的骨架,隨處可見。因此,Apache軟件組織開發(fā)出了一套通用的類庫,用來幫助軟件開發(fā)人員完成這些“骨架”的建立。其中:
    &#8226;Commons CLI用于命令行解析
    &#8226;Commons Configuration用于讀取properties格式或者XML格式的配置信息
    &#8226;Commons Logging和Log4J用來提供日志支持。
    這些通用的類庫都在http://jakarta.apache.org/commons/index.html網(wǎng)址上提供下載

    Log4J是一個高度可配置的Logging框架,提供了結(jié)構(gòu)化,多種目標(biāo)和格式支持。

    &#8226;配置Log4J
    問題:
    Log4J支持Properties和XML兩種格式的配置文件。
    解決方案:
    定義log4j.properties配置文件

    # 所有Log信息輸出到標(biāo)準(zhǔn)輸出(System.out)和在下面指定的一個文件
    # WARN是默認(rèn)的logging級別
    log4j.rootCategory = WARN, STDOUT, FILE

    # 應(yīng)用程序的logging級別是DEBUG
    log4j.logger.com.discursive = DEBUG

    # 配置標(biāo)準(zhǔn)輸出Appender
    log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout = org.apache.log4j.PatternLayout
    log4j.appender.STDOUT.layout.ConversionPattern = %5p (%F:%L) %m%n

    # 配置輸出文件Appender
    log4j.appender.FILE = org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File = output.log
    log4j.appender.FILE.MaxFileSize = 2000KB
    log4j.appender.FILE.MaxBackupIndex = 5
    log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern = %d %-5p %c - %m%n



    PropertyConfigurator.configure(getClass()
    ??.getResource("/resources/log4j.properties"));

    Logger logger = Logger.getLogger("com.discursive.SomeApp");
    logger.info("This is a info message");
    logger.error("This is a error message");


    使用BasicConfigurator類來加載log4j.properties配置。使用Logger.getLogger獲得一個logger實例。
    配置文件中的rootCategory指定將log輸出到控制臺和output.log文件。文件Appender使用了RollingFileAppender,當(dāng)文件大小達到最大文件大小(MaxFileSize)2000KB時,RollingFileAppender會備份原log文件,并再創(chuàng)建一個新的log文件。
    配置文件指定默認(rèn)的logging級別是DEBUG(log4j.logger.com.discursive = DEBUG)。所以,所有級別低于DEBUG的log信息都不會被輸出。Log4J按重要度定義了五個log級別,分別是:DEBUG, INFO, WARN, ERROR, 和FATAL。
    其他:
    Log4J還可以使用XML格式的配置文件,使用DOMConfigurator讀取。
    Log4J使用Appender和Layout來定制log輸出。Appender指定輸出到何處,Layout指定如何輸出(輸出的格式)。
    Log4J內(nèi)置的Appender有:
    &#8226;SMTPAppender
    &#8226;RollingFileAppender
    &#8226;SocketAppender
    &#8226;SyslogAppender
    &#8226;NTEventLogAppender
    Log4J支持的Layout有
    &#8226;XMLLayout
    &#8226;PatternLayout
    &#8226;HTMLLayout
    &#8226;DateLayout.


    附1
    # 所有Log信息輸出到標(biāo)準(zhǔn)輸出(System.out)和在下面指定的一個文件
    # WARN是默認(rèn)的logging級別
    log4j.rootCategory = INFO, STDOUT
    #log4j.rootCategory = INFO, STDOUT, FILE

    # 配置標(biāo)準(zhǔn)輸出Appender
    log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout = org.apache.log4j.PatternLayout
    log4j.appender.STDOUT.layout.ConversionPattern = %d{ABSOLUTE} %-5p [%c:%L] %m%n

    # 配置輸出文件Appender
    log4j.appender.FILE = org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File = output.log
    log4j.appender.FILE.MaxFileSize = 2000KB
    log4j.appender.FILE.MaxBackupIndex = 5
    log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern = %d %-5p [%c:%L] %m%n

    # 應(yīng)用程序的logging級別是DEBUG
    log4j.logger.com.xzc = DEBUG


    附2
    ### direct log messages to stdout ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - <%m>%n

    ### direct messages to file hibernate.log ###
    #log4j.appender.file=org.apache.log4j.FileAppender
    #log4j.appender.file.File=hibernate.log
    #log4j.appender.file.layout=org.apache.log4j.PatternLayout
    #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    ### set log levels - for more verbose logging change 'info' to 'debug' ###

    log4j.rootLogger=warn, stdout

    log4j.logger.net.sf.hibernate=warn

    ### log just the SQL
    #log4j.logger.net.sf.hibernate.SQL=debug

    ### log JDBC bind parameters ###
    log4j.logger.net.sf.hibernate.type=info

    ### log schema export/update ###
    log4j.logger.net.sf.hibernate.tool.hbm2ddl=debug

    ### log cache activity ###
    #log4j.logger.net.sf.hibernate.cache=debug

    ### enable the following line if you want to track down connection ###
    ### leakages when using DriverManagerConnectionProvider ###
    #log4j.logger.net.sf.hibernate.connection.DriverManagerConnectionProvider=trace

    附3

    log4j.rootLogger=debug, stdout, R
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
    
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=example.log
    
    log4j.appender.R.MaxFileSize=100KB
    # Keep one backup file
    log4j.appender.R.MaxBackupIndex=1
    
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n





    附4
    # Log4j由三個重要的組件構(gòu)成:日志信息的優(yōu)先級,日志信息的輸出目的地,日志信息的輸出格式
    # 1.配置根Logger,其語法為:
    #  log4j.rootLogger = [ level ] , appenderName, appenderName, …
    # 2.配置日志信息輸出目的地Appender,其語法為:
    #  log4j.appender.appenderName = fully.qualified.name.of.appender.class
    #  log4j.appender.appenderName.option1 = value1
    #  …
    #  log4j.appender.appenderName.option = valueN
    # Log4j提供的appender有以下幾種:
    # org.apache.log4j.ConsoleAppender(控制臺),
    # org.apache.log4j.FileAppender(文件),
    # org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件),
    # org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產(chǎn)生一個新的文件),
    # org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
    # 3.配置日志信息的格式(布局),其語法為:
    #  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(包含日志產(chǎn)生的時間、線程、類別等等信息)
    # Log4J采用類似C語言中的printf函數(shù)的打印格式格式化日志信息,打印參數(shù)如下:
    # %m? 輸出代碼中指定的消息
    # %n? 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n”
    # %p? 輸出優(yōu)先級,即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL
    # %r? 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)
    # %c? 輸出所屬的類目,通常就是所在類的全名
    # %t? 輸出產(chǎn)生該日志事件的線程名
    # %d? 輸出日志時間點的日期或時間,默認(rèn)格式為ISO8601,也可以在其后指定格式,
    #???? 比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
    # %l? 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。
    #???? 舉例:Testlog4.main(TestLog4.java:10)
    # %F? 類目名
    # %L? 代碼中的行數(shù)
    # 所有Log信息輸出到標(biāo)準(zhǔn)輸出(System.out)和在下面指定的一個文件 
    # 日志信息的優(yōu)先級從從高到低有ERROR、WARN、INFO、DEBUG
    # WARN是默認(rèn)的logging級別
    log4j.rootCategory = INFO, STDOUT
    #log4j.rootCategory = INFO, STDOUT, FILE
    #log4j.rootCategory = INFO, STD
    ?
    # 配置標(biāo)準(zhǔn)輸出Appender
    log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout = org.apache.log4j.PatternLayout
    #log4j.appender.STDOUT.layout.ConversionPattern = %d{ABSOLUTE} %-5p [%c:%t:%L] %m%n
    log4j.appender.STDOUT.layout.ConversionPattern = %d{ABSOLUTE} %-5p [ %l ] %m%n
    # 配置輸出文件Appender
    log4j.appender.FILE = org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File = output.log
    log4j.appender.FILE.MaxFileSize = 2000KB
    log4j.appender.FILE.MaxBackupIndex = 5
    log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern = %d %-5p [%c:%L] %m%n
    # 配置默認(rèn)輸出layout
    log4j.appender.STD = org.apache.log4j.ConsoleAppender
    log4j.appender.STD.layout = org.apache.log4j.TTCCLayout
    # 應(yīng)用程序的logging級別是DEBUG
    log4j.logger.com.xzc = DEBUG




    posted on 2006-09-04 00:42 xzc 閱讀(8311) 評論(4)  編輯  收藏 所屬分類: Log4j

    評論:
    # re: Log4j基本使用方法 2007-07-04 16:23 | xzc
    1. 把重要的業(yè)務(wù)日志異步批量寫入數(shù)據(jù)庫
    配置文件示例:

    log4j.logger.business=INFO,db
    log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.db.BufferSize=10
    log4j.appender.db.URL=jdbc:hsqldb:res:/hsqldb/bookstore
    log4j.appender.db.driver=org.hsqldb.jdbcDriver
    log4j.appender.db.user=sa
    log4j.appender.db.password=
    log4j.appender.db.sql=INSERT INTO SS_LOG4J_LOG (PRIORITY,LOGDATE,CLASS,METHOD,MSG) VALUES('%p','%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')
    log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j提供了簡單靈活且不影響性能的機制, 將重要業(yè)務(wù)日志寫入數(shù)據(jù)庫,方便日后的查詢:

    1. 建立一個任意命名的日志記錄表,在log4j.properties里設(shè)置連接參數(shù),根據(jù)剛才建的表名列名,編寫插入的語句。

    2. BufferSize=10 這樣的參數(shù)可以讓日志異步批量寫入,不會影響系統(tǒng)性能。

    3. 業(yè)務(wù)日志log最好不要用原來的package結(jié)構(gòu),而是在項目里協(xié)調(diào)一個獨立的名字,如business。

    Log buzzLog = LogFactory.getLog("business"); 4. 以上功能的演示代碼在bookstore example 的OrderManager.java,測試代碼在bookstore example的DBLogTest.java。

      回復(fù)  更多評論
      
    # re: Log4j基本使用方法[未登錄] 2008-05-17 17:26 | xzc
    DailyRollingFileAppender的使用
    DailyRollingFileAppender是日志記錄軟件包Log4J中的一個Appender,它能夠按一定的頻度滾動日志記錄文件。

    如果您不熟悉Log4J,那我們建議您閱讀一下 使用Log4j進行日志記錄。

    我們可以按下面的方式配置DailyRollingFileAppender:

    log4j.rootCategory=INFO,file
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.DatePattern='.'yyyy-MM-dd
    log4j.appender.file.File=run.log
    log4j.appender.file.Append=true
    log4j.appender.file.Threshold=INFO
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%c %x - %m%n
    在DailyRollingFileAppender中可以指定monthly(每月)、weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小時)和minutely(每分鐘)六個頻度,這是通過為DatePattern選項賦予不同的值來完成的。DatePattern選項的有效值為:

    '.'yyyy-MM,對應(yīng)monthly(每月)
    '.'yyyy-ww,對應(yīng)weekly(每周)
    '.'yyyy-MM-dd,對應(yīng)daily(每天)
    '.'yyyy-MM-dd-a,對應(yīng)half-daily(每半天)
    '.'yyyy-MM-dd-HH,對應(yīng)hourly(每小時)
    '.'yyyy-MM-dd-HH-mm,對應(yīng)minutely(每分鐘)
    DatePattern中不用處理的文字要放到單引號(')中,如上面的(.)。如果您對此有疑問可以查閱SimpleDateFormat的文檔。DailyRollingFileAppender中使用這個類來處理DatePattern。

    DatePattern格式化之后的文本作為文件名字的后綴。DailyRollingFileAppender不支持格式化之后的文本作為文件名字的前綴。

    DailyRollingFileAppender在每一個日志事件(LoggingEvent)附加(append)之前檢查是否需要附加。也就是說如果在一個滾動區(qū)間中沒有任何日志記錄,那么這個區(qū)間的日志記錄文件就不會形成。

    查閱DailyRollingFileAppender的JavaDoc文檔。

      回復(fù)  更多評論
      
    # re: Log4j基本使用方法[未登錄] 2008-05-17 17:27 | xzc
    # re: Log4j基本使用方法[未登錄] 2008-06-13 19:59 | xzc
    輸出到文件 RollingFileAppender的擴展,可以提供一種日志的備份功能。
    log4j.appender.R=org.apache.log4j.RollingFileAppender


    日志文件的名稱
    log4j.appender.R.File=log4j.log
    日志文件的大小
    log4j.appender.R.MaxFileSize=100KB
    保存一個備份文件
    log4j.appender.R.MaxBackupIndex=1

    log4j.appender.R.layout=org.apache.log4j.TTCCLayout

    在文件后面繼續(xù)寫

    log4j.appender.ROLLING_FILE.Append=true

    設(shè)置配置文件的編碼

    log4j.appender.ROLLING_FILE.encoding=UTF-8

      回復(fù)  更多評論
      
    主站蜘蛛池模板: 97视频免费观看2区| 在线亚洲人成电影网站色www| 久久亚洲色WWW成人欧美| av无码东京热亚洲男人的天堂| 男女拍拍拍免费视频网站| 亚洲国产综合在线| 国产小视频在线观看免费| 青青草原1769久久免费播放| 亚洲中文字幕一二三四区苍井空| 五月婷婷亚洲综合| 999久久久免费精品国产| 人妻18毛片a级毛片免费看| 亚洲精品综合久久中文字幕| 可以免费观看的一级毛片| 曰批全过程免费视频网址| 在线观看国产一区亚洲bd| 亚洲五月六月丁香激情| 午夜亚洲国产成人不卡在线| 最近免费中文字幕大全免费| 日韩大片免费观看视频播放| 亚洲大香伊人蕉在人依线| 久久久久亚洲av毛片大| 国产精品成人免费视频网站京东| 最新国产乱人伦偷精品免费网站| 亚洲国产精品无码中文lv| 亚洲宅男永久在线| 亚洲色WWW成人永久网址| 青青青国产免费一夜七次郎| 久久aa毛片免费播放嗯啊| 亚洲av无码专区在线观看下载| 久久精品国产亚洲AV麻豆网站| 亚洲成av人片不卡无码久久| 永久免费毛片在线播放| 免费福利电影在线观看| 日韩少妇内射免费播放| 亚洲国产欧美一区二区三区| 久久综合亚洲色一区二区三区| 亚洲综合色自拍一区| 亚洲av午夜精品一区二区三区| 成人啪精品视频免费网站| 成人黄色免费网址|