在实际开发过程中,为了使用别人的功能,就会去引入别人的jar包,以便我们能够使用一些接口,便利的同时也会带来一些不可控,举个例子,你是否会遇到突然日志文件里面没有日志打印了,可你好像配置或者相关的操作什么也没有改动过,可以突然就不打印日志了。这时候你就会抓耳挠腮,不知所措。当然如果你知道的话,就会发现修改起来也会很简单。接下来就让我们看看这个问题的是如何产生,并且怎么去解决这样的问题。

        在应用启动中,你是否注意过这样的打印,一段很不起眼的启动日志。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/WEB-INF/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/WEB-INF/lib/slf4j-log4j12-1.7.6.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 [org.apache.logging.slf4j.Log4jLoggerFactory]
INFO: log output type is: file
INFO: log charset is: utf-8

        事实正如你想的那样,就是这样简单的打印已经告诉你,系统Found binding两个日志的jar,但是实际使用的是‘org.apache.logging.slf4j.Log4jLoggerFactory’,这个时候你就要去看看你最近引入了什么jar,jar包里面为什么是否引入这个日志jar。

日志jar冲突导致日志无法展示_jar包

        你发现最近引入的jar里面的确出现了一个log4j的jar包,并且还发生了冲突。现在要做的事情就是排除了,接下来右击exclude就可以启动看看了。

日志jar冲突导致日志无法展示_apache_02

        启动后,你发现冲突的打印没有了,日志文件里面也正常了。

log4j:WARN No appenders could be found for logger (org.slf4j.Logger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
INFO: log output type is: file

        日志冲突是日常开发中很常见的问题,只要了解冲突的来源,就能很容易发现并解决。记得耐心些,没有什么事情是处理不了的。