问题背景在进行logback的日志输出测试时,显示如下错误SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/D:/LenovoSoftstore/softdate/Idealp/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J:Foundbindingin[jar:file:/D:/LenovoSoftstore/
SLF4J:Failedtoloadclass“org.slf4j.impl.StaticLoggerBinder”.错误原因:使用mybatis连接sqlserver时导入mssql-jdbc依赖,一般这个错误下面都会跟着官网的解释地址,估计突然一看也懵,深究的话看官网文档,如果只想解决问题的话看下方的解决方案。dependency>groupId>com.microsoft.sqlservergroupId>artifactId>mssql-jdbcartifactId>version>6.1.0.jre8version>dependency>解决方案:缺少org.slf4j.nop.ja
1SLF4J介绍SLF4J即SimpleLoggingFacadeforJava,它提供了Java中所有日志框架的简单外观或抽象。因此,它使用户能够使用单个依赖项处理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通过在类路径中插入适当的jar文件(绑定),可以在部署时插入所需的日志框架。如果要更换日志框架,仅仅替换依赖的slf4jbindings。比如,从java.util.logging替换为log4j,仅仅需要用slf4j-log4j12-1.7.28.jar替换slf4j-jdk14-1.7.28.jar。2SLF4J源码分析我们通过代码入
介绍SLF4J全称“SimpleLoggingFacadeforJava”,作为各种日志框架的简单门面。例如:java.util.logging、logback、reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。SLF4J支持的日志框架包含如下:log4j:常用的日志框架,需要有配置文件log4j.propertieslogback:可以通过logback.xml修改日志输出配置,如果没有logback.xml则使用默认配置java.util.logging:JDK1.4loggingsimple:简单实现,只显示INFO以上级别,实际使用System.err输出jcl:
我的应用服务器ibmwebsphere。我在应用程序服务器日志中收到以下错误。我在哪里可以设置websphere?[19.09.201214:56:54:940EEST]0000000aSystemErrRSLF4J:ClasspathcontainsmultipleSLF4Jbindings.[19.09.201214:56:54:940EEST]0000000aSystemErrRSLF4J:Foundbindingin[wsjar:file:/C:/Lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.cla
我的应用服务器ibmwebsphere。我在应用程序服务器日志中收到以下错误。我在哪里可以设置websphere?[19.09.201214:56:54:940EEST]0000000aSystemErrRSLF4J:ClasspathcontainsmultipleSLF4Jbindings.[19.09.201214:56:54:940EEST]0000000aSystemErrRSLF4J:Foundbindingin[wsjar:file:/C:/Lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.cla
我可能有一个Dog类,它有一个跨多个线程共享的实例。我计划将SLF4J用于所有日志记录:publicclassDog{privateLoggerlogger=LoggerFactory.getLogger(Dog.class);//...etc.}我的logger实例线程安全吗?为什么/为什么不? 最佳答案 当然,每个人都假设Logger将是线程安全的。而且(IMO)这是一个合理的工作假设。但是,您需要查看外观背后的实现类的代码/javadocs才能确定绝对。我发现以下关于各种主流实现的线程安全声明:Log4j1.2isthread
我可能有一个Dog类,它有一个跨多个线程共享的实例。我计划将SLF4J用于所有日志记录:publicclassDog{privateLoggerlogger=LoggerFactory.getLogger(Dog.class);//...etc.}我的logger实例线程安全吗?为什么/为什么不? 最佳答案 当然,每个人都假设Logger将是线程安全的。而且(IMO)这是一个合理的工作假设。但是,您需要查看外观背后的实现类的代码/javadocs才能确定绝对。我发现以下关于各种主流实现的线程安全声明:Log4j1.2isthread
当与slf4j一起使用时,Stringtest=blahblahblah;logger.info("{}",test);如下图java.lang.NoSuchMethodError:org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;atorg.slf4j.impl.JDK14LoggerAdapter.info(JDK14LoggerAdapter.java:304) 最佳答案
当与slf4j一起使用时,Stringtest=blahblahblah;logger.info("{}",test);如下图java.lang.NoSuchMethodError:org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;atorg.slf4j.impl.JDK14LoggerAdapter.info(JDK14LoggerAdapter.java:304) 最佳答案