那些年趟过的坑—log4j和slf4j-api冲突

之前接触过一个springmvc框架,使用的是log4j配置日志;但是Apache Active MQ依赖的是另一个日志类库,在引入slf4j-api后项目中sql不打印了,但是在一个项目中排查问题要知道参数和sql这个是最快的便捷方法,查过好多资料很乱,经过多次配置尝试解决了这个冲突;

1.我们先来了解一下slf4j

slf4j不同于其他日志类库,与其他日志类库有很大区别,slf4j(Simple logging Facade for Java)不是一个真正的日志实现而是一个抽象层(abstraction layer),它允许你在后台使用任意一个日志类库。

如果一个项目总已经使用log4J,而你加载了一个类库,如:Apache Active MQ 依赖的是另一个日志类库logback,那么需要加载,但是Apache Active MQ使用的是slf4j,可以继续使用原来定的日志类库无需维护新的日志框架;

总体来说,slf4j使代码独立于任意一个特定的日志api,虽然抽象日志类库在程序员思想中已经不是新鲜,而且Apache commons logging 都已经使用这种思想,现在slf4j在项目中是最为频繁出现,成为一种日志标志;

2.slf4j对比log4j logback java.util.Logging

slf4j日志主要是使得程序独立于任何特定的日志类库,依赖于特定类库可能需要不同配置,并且导致维护麻烦;slf4j api具有占位符(pace holder),在代码中表示{};占位符是一个类似String,format()的%s;会在运行时被某个提供的实际字符所替换,降低代码总字符串连接次数可节省新建String对象;

那些年趟过的坑—log4j和slf4j-api冲突_第1张图片

接下来为我们言归正传解决我的问题,

1.导入依赖jar包

slf4j-api-1.6.6.jar slf4j-log4j12-1.7.5.jar slf4j-simple-1.7.7.jar

然后在web.xml添加如下:



	log4jConfigLocation
	classpath:log4j.xml




	org.springframework.web.util.Log4jConfigListener
就是这么简单,有问题可以留言沟通哦!


你可能感兴趣的:(Log4J)