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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統計

    其他鏈接

    友情鏈接

    最新評論

    slf4j1.6.0-RC0和logback的0.9.20版本不兼容

        今天,嘗試使用slf4j + logback的黃金組合,結果發現有點問題,slf4j和logback的最新版本不兼容。當然slf4j是1.6.0-RC0,正式發布時logback應該會跟進發布新的版本吧。

        使用的版本如下ivy文件所示:

            <dependency org="org.slf4j" name="slf4j-api" rev="1.6.0-RC0"
                conf
    ="compile -> master" />
            
    <dependency org="ch.qos.logback" name="logback-classic"
                rev
    ="0.9.20" conf="runtime -> master" />
            
    <dependency org="ch.qos.logback" name="logback-core" rev="0.9.20"
                conf
    ="runtime -> master" />

        slf4j是最新的1.6.0-RC0,logback也是最新的0.9.20。

        測試代碼如下:

            Logger logger 
    = LoggerFactory.getLogger(HelloWorld.class);
            logger.info(
    "Hello World");

            
    // placeholder
            logger.info("test placeholder:  param1 = {}, param = {}"100200);

        運行后日志如下:


            
    08:21:19.812 [main] INFO  test.example1.HelloWorld - Hello World
    Exception in thread 
    "main" java.lang.NoSuchMethodError:

    org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava
    /lang/String;[Ljava/lang/Object;)

    Ljava
    /lang/String;
        at ch.qos.logback.classic.spi.LoggingEvent.getFormattedMessage(LoggingEvent.java:
    288)
        at ch.qos.logback.classic.spi.LoggingEvent.prepareForDeferredProcessing

    (LoggingEvent.java:
    196)
        at ch.qos.logback.core.OutputStreamAppender.subAppend(OutputStreamAppender.java:
    211)
        at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:
    108)
        at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend

    (UnsynchronizedAppenderBase.java:
    91)
        at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders

    (AppenderAttachableImpl.java:
    64)
        at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:
    275)
        at ch.qos.logback.classic.Logger.callAppenders(Logger.java:
    262)
        at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:
    465)
        at ch.qos.logback.classic.Logger.filterAndLog_2(Logger.java:
    456)
        at ch.qos.logback.classic.Logger.info(Logger.java:
    631)
        at test.example1.HelloWorld.main(HelloWorld.java:
    14)

        可以看到第一個普通的"logger.info("Hello World");"語句打印正常,但是第二個使用了slf4j的placeholder特性的info語句遭遇異常:類org.slf4j.helpers.MessageFormatter 中沒有logback期望調用的一個方法。

         猜測是slf4j新的1.6.0-RC0版本對類MessageFormatter 做了調整,而原有調用它的logback 0.9.20版本還沒有更新。試著更改ivy設置為:

    <dependency org="ch.qos.logback" name="logback-classic"
                rev
    ="0.9.20" conf="runtime -> *" />

        讓ivy自動將logback 0.9.20的依賴搞定,resolve成功后發現果然0.9.20是使用slf4j的1.5.11版本。運行上面的代碼,成功不再報錯:

    08:37:00.562 [main] INFO  test.example1.HelloWorld - Hello World
    08:37:00.578 [main] INFO  test.example1.HelloWorld - test placeholder:  param1 = 100, param = 200

        看來暫時還不能使用slf4j 1.6.0-RC0 + logback 0.9.20的組合了,看了一下logback的網站,沒有發現新的測試版本,只能退回到slf4j 1.5.11 + logback 0.9.20。等slf4j 1.6.0 release之后,logback 應該會發布新的版本吧。小小的鄙視一下logback,作為嚴重依賴slf4j的項目,居然不及時跟進。我測試過log4j的版本在新的1.6.0-RC0就沒有出現類似問題。


    posted on 2010-04-26 08:54 sky ao 閱讀(3060) 評論(0)  編輯  收藏 所屬分類: java

    主站蜘蛛池模板: 337p日本欧洲亚洲大胆色噜噜 | 日韩精品无码一区二区三区免费 | 精品久久亚洲中文无码| 成全视频免费高清| 男女污污污超污视频免费在线看| 久久久久久久久亚洲| 成人午夜18免费看| 国产日韩一区二区三免费高清| 亚洲无线一二三四区| ZZIJZZIJ亚洲日本少妇JIZJIZ| 最近最好最新2019中文字幕免费| 亚洲JLZZJLZZ少妇| 亚洲国产综合91精品麻豆| 日本久久久免费高清| 久久国产乱子伦精品免费不卡| 男女超爽视频免费播放| 亚洲精品美女视频| 亚洲国产精品一区二区三区久久| 成人免费的性色视频| 亚洲精品黄色视频在线观看免费资源 | 一级黄色毛片免费看| 亚洲av永久无码嘿嘿嘿| 亚洲一区精品无码| 国产精品免费播放| 国产在线观看麻豆91精品免费 | 国产91久久久久久久免费| 91成人在线免费观看| 一本到卡二卡三卡免费高| 美女视频黄免费亚洲| 亚洲国产精品一区| 国产专区一va亚洲v天堂| 青青青青青青久久久免费观看| 99视频在线免费| 国产一级高青免费| 人妻18毛片a级毛片免费看| 亚洲精品无码久久久久牙蜜区| 亚洲人色大成年网站在线观看| 久久亚洲精品AB无码播放| 国产国拍精品亚洲AV片| 又大又硬又爽免费视频| 日韩午夜免费视频|