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

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

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

    DANCE WITH JAVA

    開發(fā)出高質(zhì)量的系統(tǒng)

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    好友之家

    最新評(píng)論

    SLF4J 教程(自由在各種log中切換)

    一、介紹:
    簡(jiǎn)單日記門面(simple logging Facade for java)SLF4J是為各種loging APIs提供一個(gè)簡(jiǎn)單統(tǒng)一的
    接口,從而使得最終用戶能夠在部署的時(shí)候配置自己希望的loging APIs實(shí)現(xiàn)。 Logging API實(shí)現(xiàn)既可以
    選擇直接實(shí)現(xiàn)SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通過SLF4J提供的API實(shí)現(xiàn)
    來開發(fā)相應(yīng)的適配器如Log4jLoggerAdapter、JDK14LoggerAdapter。在SLF4J發(fā)行版本中包含了幾個(gè)
    jar包,如slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-log4j13.jar,
    slf4j-jdk14.jar and slf4j-jcl.jar通過這些jar文件可以使編譯期與具體的實(shí)現(xiàn)脫離。或者說可以
    靈活的切換
    二、官方站點(diǎn)
    官方的網(wǎng)站:http://www.slf4j.org/manual.html
    三、為何使用slf4j?
    我們?cè)陂_發(fā)過程中可能使用各種log,每個(gè)Log有不同的風(fēng)格、布局,如果想靈活的切換那么slf4j是比較好的
    選擇。
    四、如何使用slf4j
    下邊一段程序是經(jīng)典的使用slf4j的方法.

     

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    public class Wombat {
        
    final Logger logger = LoggerFactory.getLogger(Wombat.class);
        Integer t;
        Integer oldT;
        
    public void setTemperature(Integer temperature) {
            oldT 
    = t;
            t 
    = temperature;
            logger.error(
    "Temperature set to {}. Old temperature was {}.", t, oldT);
            
    if (temperature.intValue() > 50{
                logger.info(
    "Temperature has risen above 50 degrees.");
            }

        }

        
    public static void main(String[] args) {
            Wombat wombat 
    = new Wombat();
            wombat.setTemperature(
    1);
            wombat.setTemperature(
    55);
        }

    }


    下邊介紹一下運(yùn)行上邊程序的過程。
    1,編譯上邊的程序,需要classpath中加入slf4j-api-1.4.1.jar文件
    2,運(yùn)行時(shí),需要classpath中加上slf4j-simple-1.4.1.jar
    運(yùn)行得到結(jié)果:
    ----------------------------
    0 [main] ERROR Wombat - Temperature set to 1. Old temperature was null.
    0 [main] ERROR Wombat - Temperature set to 55. Old temperature was 1.
    0 [main] INFO Wombat - Temperature has risen above 50 degrees.
    這個(gè)是simple log風(fēng)格,

    3,切換:如果想切換到j(luò)dk14的log的風(fēng)格,只需要把slf4j-simple-1.4.1.jar
    從classpath中移除,同時(shí)classpath中加入slj4j-jdk14-1.4.1.jar
    這時(shí)的運(yùn)行結(jié)果:
    ---------------------------------------------------
    2007-7-9 10:40:15 Wombat setTemperature
    嚴(yán)重: Temperature set to 1. Old temperature was null.
    2007-7-9 10:40:16 Wombat setTemperature
    嚴(yán)重: Temperature set to 55. Old temperature was 1.
    2007-7-9 10:40:16 Wombat setTemperature
    信息: Temperature has risen above 50 degrees.
    已經(jīng)變成jdk14的log風(fēng)格了。
    4,再次切換到log4j
    同樣移除slj4j-jdk14-1.4.1.jar,加入slf4j-log4j12-1.4.1.jar,同時(shí)加入log4j-1.2.x.jar
    加入log4j.properties。得到顯示結(jié)果:
    ---------------------------------------
    10:42:27,328 ERROR Wombat: Temperature set to 1. Old temperature was null.
    10:42:27,328 ERROR Wombat: Temperature set to 55. Old temperature was 1.
    10:42:27,328  INFO Wombat: Temperature has risen above 50 degrees.
    在不同的風(fēng)格中切換只需要在部署期切換類庫就可以了,和開發(fā)時(shí)無關(guān)。

    posted on 2007-07-09 10:47 dreamstone 閱讀(18228) 評(píng)論(9)  編輯  收藏 所屬分類: 利器其它開源框架

    評(píng)論

    # re: SLF4J 教程(自由在各種log中切換) 2007-07-09 12:40 Unmi

    commons-logging本來就是一個(gè)通用框架,其實(shí)也很方便的,沒見這個(gè)有什么優(yōu)勢(shì)啊  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2007-07-09 12:46 dreamstone

    每個(gè)人、每個(gè)公司的習(xí)慣,傾向不同。有l(wèi)og4j ,jdk log ,NLOG4J等就說明大家有不同的需求,呵呵。優(yōu)勢(shì)在于整合。

      回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2007-07-09 13:31 lingo

    不懂,跟commons-logging比有什么有事嗎?雖然commons-logging是個(gè)橋接器,不過實(shí)際上一直在用的還是log4j  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2007-07-09 22:05 se

    不錯(cuò)  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2007-07-10 14:19 Roy

    不同在這里
    logger.error("Temperature set to {}. Old temperature was {}.", t, oldT);

    這是其他Logger不支持的功能。
    以前我們都要這樣寫
    logger.error("Temperature set to "+t +". Old temperature was "+oldT+"." );

    也就是經(jīng)常說為什么要加上log.isDebugalbe()判斷的原因之一,這樣做會(huì)減少字段串的合并,理解上減少JVM垃圾  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2007-09-24 15:14 hanfeng

    SLF4J的作者就是Log4j的作者,他正在開發(fā)logback來代替log4j,logback有更高的性能。logback支持上面提到的
    logger.error("Temperature set to {}. Old temperature was {}.", t, oldT);
    commons-logging沒有提供類似的接口,SLF4J提供了,而且解決了classloader的問題。  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換) 2011-04-11 20:07 Jacklondon Chen

    @hanfeng
    我不覺得 slf4j 解決了 classloader 問題。
    commons-logging 也號(hào)稱 解決了 classloader 問題。但是當(dāng) J2EE server 也用commons-logging 并且版本比你的應(yīng)用中所用commons-logging 版本老時(shí),問題就出現(xiàn)了。
    現(xiàn)在 slf4j 沒有這個(gè)問題,是因?yàn)?J2EE server 不用 slf4j. 而 classloader 問題的最終解決,需要 JDK、J2EE server 兩方面的廠商合作出一個(gè)新的解決辦法,才能搞定問題。現(xiàn)在還早呢。
    ----歡迎大家試用我們的單點(diǎn)登錄系統(tǒng) http://zhegui.biz
      回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換)[未登錄] 2014-04-18 13:27 Robot

    common-logging通過動(dòng)態(tài)查找的機(jī)制,在程序運(yùn)行時(shí)自動(dòng)找出真正使用的日志庫。由于它使用了ClassLoader尋找和載入底層的日志庫, 導(dǎo)致了象OSGI這樣的框架無法正常工作,因?yàn)镺SGI的不同的插件使用自己的ClassLoader。 OSGI的這種機(jī)制保證了插件互相獨(dú)立,然而卻使Apache Common-Logging無法工作。

    slf4j在編譯時(shí)靜態(tài)綁定真正的Log庫,因此可以再OSGI中使用。另外,SLF4J 支持參數(shù)化的log字符串,避免了之前為了減少字符串拼接的性能損耗而不得不寫的if(logger.isDebugEnable()),現(xiàn)在你可以直接寫:logger.debug(“current user is: {}”, user)。拼裝消息被推遲到了它能夠確定是不是要顯示這條消息的時(shí)候,但是獲取參數(shù)的代價(jià)并沒有幸免。  回復(fù)  更多評(píng)論   

    # re: SLF4J 教程(自由在各種log中切換)[未登錄] 2016-03-22 17:24 ddd

    ewrwrw  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 亚洲AV永久青草无码精品| 国产在线精品一区免费香蕉 | 亚洲精品人成网在线播放影院| 亚洲精品国产成人影院| 免费精品国产自产拍在| 暖暖日本免费中文字幕| 一级做a爰片久久毛片免费看| 亚洲色精品VR一区区三区| 久久久久亚洲AV成人片| 亚洲乱码中文字幕综合| 亚洲国产av一区二区三区| 免费看少妇作爱视频| 免费无码AV电影在线观看| 在线免费观看亚洲| 国产羞羞的视频在线观看免费| 免费看黄网站在线看| 日日摸日日碰夜夜爽亚洲| **实干一级毛片aa免费| 三年在线观看免费观看完整版中文| 美女裸体无遮挡免费视频网站| 亚洲狠狠婷婷综合久久| 狠狠色香婷婷久久亚洲精品| 亚洲欧洲精品在线| 久久精品亚洲一区二区三区浴池| 亚洲精品国精品久久99热一| 相泽亚洲一区中文字幕| 亚洲一区二区视频在线观看| 亚洲精品视频久久久| 男人的天堂亚洲一区二区三区| 4hu四虎最新免费地址| 巨波霸乳在线永久免费视频 | 国产免费变态视频网址网站| 中文字幕无码不卡免费视频| 综合在线免费视频| 三年片在线观看免费大全| 免费无码肉片在线观看| 成人毛片免费观看| 免费观看男人免费桶女人视频| 日韩一区二区在线免费观看 | 亚洲AV成人片色在线观看| 久久久久久a亚洲欧洲aⅴ|