feed4junit-1.1.22报警告Warning: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

  这里有个兼容性的问题,需手动添加slf4j-log4j12和log4j的lib库文件。以slf4j-log4j12-1.7.21和log4j-1.2.17为例:

1)先到slf4j和log4j的网站去下载安装包。

2)从slf4j的安装包中提取slf4j-log4j12-1.7.21.jar文件,从log4j的安装包中提取log4j-1.2.17.jar文件,并放入feed4junit的lib目录下。

  这里slf4j-log4j12和log4j的版本应该关系不大,别的版本应该也可以。而且因为我是选择了slf4j-log4j12,所以后面才需要log4j,如果前面选的是别的日志系统,如NOP, Simple, jdk等,那么后面也应该选择对应的日志库。

  SLF4j只是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。包括直接实现SLF4J接口的loging APIs如: logback、SimpleLogger;还有通过开发相应的适配器来使用已有的API实现如Log4jLoggerAdapter、JDK14LoggerAdapte等等。换言之slf4j-api本身只是提供了一个日志接口,并没有日志的实现,所以如果没有具体实现的lib会报上面的警告,而这里做的就是给它加上log4j的实现。

3)在Eclipse里import,再在project->properties里Add JARs和feed4junit的libs一样加进来。

4)对log4j还需要增加一个property文件log4j.properties。创建一个log4j.properties文件,可以和class文件放在一个目录下,拷贝如下内容:

# Set root logger level to DEBUG/WARN/ERROR/FATAL and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

5)接下来还需要把这个property文件加入到classpath里。
  从Eclipse->Run->Run Configurations->Classpath(tab)->User Entries->Advanced(button on the right)->Add Folders,然后找到包含log4j.properties的目录,最后Apply。

6)再执行单元测试就不报错了。不过因为上面property里设置的是DEBUG级别,所以console输出上会有很多的信息输出。不想看的话把上面的日志级别设为ERROR即可。

评论

此博客中的热门博文

Windows上调试C/C++程序时自动产生coredump的设置方法

利用Gitlab的Jira issue tracker实现Jira issue自动根据Gitlab commit/merge更新状态

go用xorm去update数据库的一个坑