`

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等日志包

    在"slf4j-1.6.1"这个版本中,SLF4J提供了各种绑定(binding)以适配不同的日志实现,例如log4j-slf4j-impl.jar用于将SLF4J与Log4j集成,而slf4j-jdk14.jar则用于与Java Util Logging集成。 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.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-...

    最新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.30-API文档-中文版.zip

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

    开发工具 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...

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

    slf4j-api-1.6.1-slf4j-nop-1.6.1.rar

    标题中的"slf4j-api-1.6.1-slf4j-nop-1.6.1.rar"表明这是一个包含SLF4J API和NOP绑定的日志库的压缩包。描述中提到,解压后会得到两个JAR文件:slf4j-api-1.6.1.jar和slf4j-nop-1.6.1.jar。 **SLF4J API** 1. **...

    slf4j-api-1.7.25

    在`slf4j-api-1.7.25.jar`文件中,包含了SLF4J的所有核心接口和类,如`org.slf4j.Logger`、`org.slf4j.LoggerFactory`和`org.slf4j.Marker`等。这些接口定义了日志记录的基本操作,如`trace()`, `debug()`, `info()`...

    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; ...

    slf4j-1.6.0.zip

    在"slf4j-1.6.0.zip"压缩包中,可能包含了SLF4J的API库(如slf4j-api-1.6.0.jar)和一个或多个绑定器,比如针对Logback的绑定器(slf4j-logback1.x-1.6.0.jar)。开发环境中,我们需要根据实际使用的日志框架选择...

    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; ...

    slf4j-api.jar和slf4j-nop.jar打包下载

    压缩包内的文件名称列表中,"slf4j-api-1.5.8.jar"是SLF4J API的1.5.8版本,而"slf4j-nop-1.5.8.jar"则是SLF4J NOP实现的同版本。这两个JAR文件通常会一起使用,API JAR提供日志接口,NOP JAR作为默认的日志实现。...

    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.12.jar、slf4j-api-1.7.12.jar

    "slf4j-api-1.7.12.jar"则是SLF4J的核心API库,包含了所有SLF4J的日志记录方法和接口,但不包含任何实际的日志实现。 在Java项目中,通常需要同时包含这两个JAR文件:slf4j-api-1.7.12.jar(提供接口)和slf4j-log4...

    slf4j-api-1.7.7.jar下载

    总之,`slf4j-api-1.7.7.jar`是SLF4J API的一个版本,它为开发者提供了一个灵活的日志接口,允许在不同的日志框架之间轻松切换,提高了代码的可维护性和部署的便捷性。在实际使用时,需要结合具体的日志实现库,才能...

    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.7.12.jar slf4j-log4j12-1.7.12.jar

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。这个接口使得应用程序的代码与...

    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; ...

Global site tag (gtag.js) - Google Analytics