SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”

来源:互联网 发布:mac端口号查询 编辑:程序博客网 时间:2024/06/05 16:43

在使用logback 的时候  使用的实例

java代码:

package com.eastcom.my.study.first.logback;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LogbackDemo {private static Logger logger = LoggerFactory.getLogger(com.eastcom.my.study.first.logback.LogbackDemo.class);public static void main(String[] args) {logger.trace("======trace");logger.debug("======debug");logger.info("======info");logger.warn("======warn");logger.error("======error");String name = "Aub";String message = "3Q";String[] fruits = { "apple", "banana" };// logback提供的可以使用变量的打印方式,结果为"Hello,Aub!"logger.info("Hello,{}!", name);// 可以有多个参数,结果为“Hello,Aub! 3Q!”logger.info("Hello,{}!   {}!", name, message);// 可以传入一个数组,结果为"Fruit: apple,banana"logger.info("Fruit:  {},{}", fruits);System.out.println("hello world ");}}


引入的jar包

        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency>    <groupId>ch.qos.logback</groupId>    <artifactId>logback-classic</artifactId>    <version>1.2.3</version></dependency><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core --><dependency>    <groupId>ch.qos.logback</groupId>    <artifactId>logback-core</artifactId>    <version>1.2.3</version></dependency>    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-api</artifactId>    <version>1.7.25</version></dependency>


总是不能正常输出日志:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.hello world 

报错 

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

或者在网上找到了答案:链接  https://stackoverflow.com/questions/7421612/slf4j-failed-to-load-class-org-slf4j-impl-staticloggerbinder

添加了依赖包

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-simple</artifactId>    <version>1.7.25</version></dependency>


需要去掉  <scope>test</scope>


正常情况下输出:

<configuration>  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">      <!-- encoders are assigned the type                    ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->    <encoder>          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>    </encoder>  </appender>  <root level="warn">      <appender-ref ref="STDOUT" />  </root></configuration>




over


如果加入logback.xml 文件

<configuration>  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">      <!-- encoders are assigned the type                    ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->    <encoder>          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>    </encoder>  </appender>  <root level="warn">      <appender-ref ref="STDOUT" />  </root></configuration>

其配置文件的路径在src/logback.xml

在代码中需要从新加载配置文件

java代码

package com.eastcom.my.study.first.logback;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ch.qos.logback.classic.LoggerContext;import ch.qos.logback.classic.joran.JoranConfigurator;import ch.qos.logback.core.joran.spi.JoranException;import ch.qos.logback.core.util.StatusPrinter;public class LogbackDemo {private static Logger logger = LoggerFactory.getLogger(com.eastcom.my.study.first.logback.LogbackDemo.class);public static void main(String[] args) {LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();JoranConfigurator configurator = new JoranConfigurator();configurator.setContext(lc);lc.reset();try {configurator.doConfigure("D:/newworkspace/my-study-first/src/logback.xml");} catch (JoranException e) {e.printStackTrace();}StatusPrinter.printInCaseOfErrorsOrWarnings(lc);System.out.println("===================");logger.debug("Hello {}", "debug message");logger.trace("======trace");logger.debug("======debug");logger.info("======info");logger.warn("======warn");logger.error("======error");String name = "Aub";String message = "3Q";String[] fruits = { "apple", "banana" };// logback提供的可以使用变量的打印方式,结果为"Hello,Aub!"logger.info("Hello,{}!", name);// 可以有多个参数,结果为“Hello,Aub! 3Q!”logger.info("Hello,{}!   {}!", name, message);// 可以传入一个数组,结果为"Fruit: apple,banana"logger.info("Fruit:  {},{}", fruits);System.out.println("hello world ");}}


可以看到只获得warn的日志输出


SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/softinstall/java/apache-maven-3/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/D:/softinstall/java/apache-maven-3/repository/org/slf4j/slf4j-simple/1.7.25/slf4j-simple-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]===================13:34:46.762 [main] WARN  c.e.m.s.first.logback.LogbackDemo - ======warn13:34:46.773 [main] ERROR c.e.m.s.first.logback.LogbackDemo - ======errorhello world 


over 


在Linux下打包运行  指定配置文件的位置,可也使用  -Dlogback.configurationFile=/data/myzjodc-test/conf/logback/logback.xml 

java -Dlogback.configurationFile=/data/myzjodc-test/conf/logback/logback.xml -cp .:./my-study-first-0.0.1-SNAPSHOT-jar-with-dependencies.jar  com.eastcom.my.study.first.logback.LogbackDemo2












阅读全文
0 0
原创粉丝点击