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

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

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

    隨筆-71  評論-4  文章-0  trackbacks-0
     所謂的Commons Logging接口,是指將日志功能的使用與日志具體實現(xiàn)分開,通過配置文件來指定具體使用的日志實現(xiàn)。這樣你就可以在Struts 1.1中通過統(tǒng)一的接口來使用日志功能,而不去管具體是利用的哪種日志實現(xiàn),有點于類似JDBC的功能。Struts 1.1中支持的日志實現(xiàn)包括:Log4J,JDK Logging API, LogKit,NoOpLog和SimpleLog。

    你可以按照如下的方式來使用Commons Logging接口(可以參照Struts源文中的許多類實現(xiàn)):


    package com.foo;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
     public class Foo {    
       private static Log log = LogFactory.getLog(Foo.class);
       public void setBar(Bar bar) {       
       if (log.isTraceEnabled()) {         
           log.trace("Setting bar to " + bar);   
       }      
       this.bar = bar;   
     }
    }

     

    而開啟日志功能最簡單的辦法就是在WEB-INF/classes目錄下添加以下兩個文件:

    commons-logging.properties文件:

    # commons-logging.properties
    org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog

    simplelog.properties文件:

    # Logging detail level,
    # Must be one of ("trace", "debug", "info", "warn", "error", or "fatal").
    org.apache.commons.logging.simplelog.defaultlog=fatal

       這里我們采用的日志實現(xiàn)是SimpleLog,你可以在simplelog.properties文件指定日志明細的級別:trace,debug,info,warn,error和fatal,從trace到fatal錯誤級別越來越高,同時輸出的日志信息也越來越少。而這些級別是和org.apache.commons.logging.log接口中的方法一一對應(yīng)的。這些級別是向后包含的,也就是前面的級別包含后面級別的信息。

       Struts本身并沒有配置日志功能,日志功能由commons-logging實現(xiàn)。在Struts中對日志功能的使用遵循以下的步驟: 
    1、如果存在log4j,就使用log4j(默認)。 
       在WEB-INF/classes目錄下添加log4j.properties,即可啟用log4j。下面是一個與hibernate搭配的log4j.properties文件:

    ### 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=d:\\hhhibernate.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,file

    log4j.logger.net.sf.hibernate=info

    ### 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

    2、如果存在JDK1.4, 使用JDK1.4。 
    3、如果兩者都不存在,就使用SimpleLog。 

        Commons Logging接口實現(xiàn)了日志功能的使用與日志具體實現(xiàn)的分離。這樣你在Struts 1.1中就可以通過統(tǒng)一的接口來使用日志功能,而不必關(guān)心日志功能是由哪種方案來實現(xiàn)。如果你需要Struts當(dāng)前支持的日志實現(xiàn)方案,你可以參考 org.apache.commons.logging的文檔。如果你要在Struts中使用commons-logging功能,你就需要把所需的JAR文件加到到你的應(yīng)用程序庫中。也許有時候你會問“我真的需要使用commons-logging嗎”。問題答案取決于實際項目的要求。如果你希望你的日志方案能夠輕易的改變?nèi)罩緦崿F(xiàn)方案而同時又對你的應(yīng)用程序沒有什么影響,那么commons-logging會是一個非常好的選擇。 

    那么,我們?nèi)绾卧谖业木幋a過程中學(xué)習(xí)使用commons-logging呢? 

    在你的代碼中使用commons-logging是件簡單的事,你所做的就是加入兩個import,同時聲明一個logger。 

    package com.foo;
    // ...
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    ...
    public class Foo {
        // ...
        private static Log log = LogFactory.getLog(Foo.class);\\
        // ...
        public void setBar(Bar bar) {
            if (log.isTraceEnabled()) {
                log.trace("Setting bar to " + bar);
            }
            this.bar = bar;\\
        }
    // ...
    }
        通常,我們會為每個類都生成唯一的一個logger。為了方便起見在我們給這個logger命名的時候希望這個對象的名稱能夠體現(xiàn)出這個logger是在哪個地方使用的。在這個例子中l(wèi)ogger的名字是com.foo.Foo。這樣你通過logger的名字就可以很快地指向問題出現(xiàn)的地方。此外,你也可以方便地啟動/關(guān)閉日志功能。 
    posted on 2006-01-12 12:39 zjw_albert 閱讀(157) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 黄网址在线永久免费观看 | 久久亚洲精品无码VA大香大香| 青草久久精品亚洲综合专区| 欧洲精品成人免费视频在线观看 | 一个人免费播放在线视频看片 | 久久久亚洲精品国产| 国内精品免费视频精选在线观看| 亚洲色无码专区在线观看| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | a级毛片免费观看在线| 亚洲精品麻豆av| 久青草视频97国内免费影视| 久久久久亚洲精品无码网址| 久久九九免费高清视频| 亚洲无人区一区二区三区| 成人爽a毛片免费| 久久综合亚洲色HEZYO社区| 国产人在线成免费视频| 亚洲综合色一区二区三区| 免费高清小黄站在线观看| 国产亚洲精品AAAA片APP| 亚洲精品无码av天堂| 99免费在线视频| 亚洲网站在线播放| 成人男女网18免费视频| 午夜亚洲乱码伦小说区69堂| 久久亚洲2019中文字幕| 久久99免费视频| 日韩亚洲产在线观看| 免费人妻av无码专区| 久久国产精品成人免费| 亚洲伊人久久大香线蕉影院| 国产精品免费视频网站| 日韩精品无码免费专区午夜| 亚洲国产成人久久| 亚洲AⅤ视频一区二区三区 | 久久午夜免费视频| 免费在线人人电影网| 亚洲AV乱码久久精品蜜桃 | 亚洲AV无码乱码在线观看| 国产一精品一AV一免费|