`

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 = {} " 100 200 );


    运行后日志如下:


        
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就没有出现类似问题。

0
0
分享到:
评论

相关推荐

    slf4j-1.6.0全套jar包资源,slf4j-api-1.6.0.jar,slf4j-jdk14-1.6.0.jar...

    slf4j-api-1.6.0.jar,slf4j-jdk14-1.6.0.jar,slf4j-log4j12-1.6.0-rc0.jar,slf4j-nop-1.6.0.jar,slf4j-simple-1.6.0.jar

    slf4j-1.6.1-Blogback-0.9.24等日志包

    spring mvc 所需日志jar logback slf4j

    slf4j-1.7.21所有相关jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    最新slf4j-1.7.21.zip源码和jar包

    1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources....

    slf4j-api-1.7.26-API文档-中文版.zip

    赠送jar包:slf4j-api-1.7.26.jar; 赠送原API文档:slf4j-api-1.7.26-javadoc.jar; 赠送源代码:slf4j-api-1.7.26-sources.jar; 赠送Maven依赖信息文件:slf4j-api-1.7.26.pom; 包含翻译后的API文档:slf4j-api-...

    log4j-slf4j-impl-2.12.1-API文档-中英对照版.zip

    赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...

    log4j-slf4j-impl-2.12.1-API文档-中文版.zip

    赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...

    log4j-slf4j-impl-2.17.1-API文档-中英对照版.zip

    赠送jar包:log4j-slf4j-impl-2.17.1.jar; 赠送原API文档:log4j-slf4j-impl-2.17.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.17.1.pom; ...

    最新slf4j-1.7.25.zip源码和jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    Tomcat + SLF4J + Logback 2017年10月最新包(Tomcat7~9)

    https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback上的jar与源码,网络不好,下载不易,特此分享。包括: logback-1.2.3.zip Tomcat7.0.82\tomcat-juli-7.0.82-slf4j-1.7.25-logback-1.2.3.zip Tomcat...

    slf4j-api-1.6.6-API文档-中英对照版.zip

    赠送jar包:slf4j-api-1.6.6.jar; 赠送原API文档:slf4j-api-1.6.6-javadoc.jar; 赠送源代码:slf4j-api-1.6.6-sources.jar; 赠送Maven依赖信息文件:slf4j-api-1.6.6.pom; 包含翻译后的API文档:slf4j-api-...

    slf4j-1.6.1+logback-0.9.24.rar

    janino-2.3.17.jar jcl-over-slf4j-1.6.1.jar log4j-1.2.8.jar logback-access-0.9.24.jar logback-classic-0.9.24.jar logback-core-0.9.24.jar ... slf4j-1.6.1+logback-0.9.24.rar slf4j-api-1.6.1.jar

    slf4j-api-1.8.0-alpha2-API文档-中文版.zip

    赠送jar包:slf4j-api-1.8.0-alpha2.jar; 赠送原API文档:slf4j-api-1.8.0-alpha2-javadoc.jar; 赠送源代码:slf4j-api-1.8.0-alpha2-sources.jar; 赠送Maven依赖信息文件:slf4j-api-1.8.0-alpha2.pom; 包含...

    log4j-to-slf4j-2.10.0-API文档-中文版.zip

    赠送jar包:log4j-to-slf4j-2.10.0.jar; 赠送原API文档:log4j-to-slf4j-2.10.0-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.10.0-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.10.0.pom; 包含翻译后...

    log4j-to-slf4j-2.17.1-API文档-中英对照版.zip

    赠送jar包:log4j-to-slf4j-2.17.1.jar; 赠送原API文档:log4j-to-slf4j-2.17.1-javadoc.jar; 赠送源代码:log4j-to-slf4j-2.17.1-sources.jar; 赠送Maven依赖信息文件:log4j-to-slf4j-2.17.1.pom; 包含翻译后...

    开发工具 slf4j-api-1.7.22

    开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22开发工具 slf4j-api-1.7.22...

    log4j-over-slf4j-1.7.33-API文档-中文版.zip

    赠送jar包:log4j-over-slf4j-1.7.33.jar; 赠送原API文档:log4j-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:log4j-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:log4j-over-slf4j-1.7.33.pom; ...

    slf4j-log4j12-1.7.25-API文档-中文版.zip

    赠送jar包:slf4j-log4j12-1.7.25.jar; 赠送原API文档:slf4j-log4j12-1.7.25-javadoc.jar; 赠送源代码:slf4j-log4j12-1.7.25-sources.jar; 赠送Maven依赖信息文件:slf4j-log4j12-1.7.25.pom; 包含翻译后的API...

    log4j-over-slf4j-1.6.0-RC0.jar

    通过SLF4J实现的Log4j org.slf4j/log4j-over-slf4j/1.6.0-RC0/log4j-over-slf4j-1.6.0-RC0.jar

    slf4j-api-1.7.32-API文档-中英对照版.zip

    赠送jar包:slf4j-api-1.7.32.jar; 赠送原API文档:slf4j-api-1.7.32-javadoc.jar; 赠送源代码:slf4j-api-1.7.32-sources.jar; 赠送Maven依赖信息文件:slf4j-api-1.7.32.pom; 包含翻译后的API文档:slf4j-api-...

Global site tag (gtag.js) - Google Analytics