本人想在项目中加入log系统,采用slf4j+log4j的框架,在集成到项目中时,遇到了2个问题,记录下来。

multiple SLF4J bindings

错误日志

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.21/7238b064d1aba20da2ac03217d700d91e02460fa/slf4j-log4j12-1.7.21.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Administrator/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.11.2/4d44e4edc4a7fb39f09b95b09f560a15976fa1ba/log4j-slf4j-impl-2.11.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

问题解决

项目通过gradle引入了多个依赖项目,这些依赖项目又引入了slf4j-log4j12和log4j-slf4j-impl,这两个jar包都有StaticLoggerBinder类,所以出现了multiple bindings。log4j-slf4j-impl是我主动引入的,而slf4j-log4j12是依赖项目引入的,所以必须要找出是哪个依赖库引入了slf4j-log4j12。下面介绍下在idea中的方法(我用的是gradle,maven类似):
1.打开Gradle projects,找到dependences task,执行它,会输出gradle的依赖树:

然后在依赖树的输出里查找slf4j-log4j12:

发现它是由zookeeper3.6.2引入的,所以我们可以在gradle的配置里加上这段代码把它排除:

configurations.all {exclude module: 'slf4j-log4j12'
}

以上代码是斩草除根型的解决办法,如果以后再引入别的依赖,也包含slf4j-log4j12的话仍然起效。如果想精确一点,只针对zookeeper这个依赖,也可以这么写:

dependencies {compile('io.vertx:vertx-zookeeper:3.6.2') {exclude group: 'org.slf4j', module: 'slf4j-log4j12'}//...
}

log4j找不到配置文件

错误日志

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

问题解决

log4j的配置文件需要从system property里面读取,可以在系统的启动方法里加上一行代码:

System.setProperty("log4j.configurationFile","log4j.xml");

有个地方要注意,log4j默认是到你的classpath下去找xml配置文件的,所以你在上面代码里写的“log4j.xml”,其实log4j是从classpath的目录里挨个查找log4j.xml。如果你没有有maven或gradle,那么可以把log4j.xml放在src目录,如果用maven或gradle,那么放在src/main/resources。

项目中加入slf4j log遇到的问题和解决方案相关推荐

  1. spring项目中使用slf4j和log4j2日志框架

    为什么要使用slf4j和log4j2 1.多日志实现组件存在问题 java世界里有许多实现日志功能的工具,最早得到广泛使用的是 log4j,许多应用程序的日志部分都交给了 log4j,不过作为组件开发 ...

  2. Spring Boot项目中使用RestTemplate时出现乱码时的解决方案

    问题描述:SpringBoot项目中使用RestTemplate调用接口时,返回结果中可能会出现以下的乱码现象 解决方法:将返回的结果response.getBody()转换为utf-8格式 Resp ...

  3. java log 断点_项目中常见的log日志调用

    第一种用法:引用org.apache.commons.logging.Log. import org.apache.commons.logging.Log; import org.apache.com ...

  4. Java程序员必会的Spring AOP在实际项目中的应用

    很久没有用过Java的AOP,最近接触到了一个需求,恰好可以用AOP的思想来实现,就此总结一下. 目录 AOP简介 ① pointcut(切入点) ② advice(通知) ③ aspect(切面) ...

  5. 如何移除项目中无用的 console.log 代码

    大家好,我是若川.早些天时,我看到一个后端公众号发<辞退了一个前端>,当时还想着现在后端公众号都开始吊打前端了嘛.其中有个理由就是线上还一堆console.log...我猜很多人都会移除项 ...

  6. log日志java web_Javaweb项目中使用Log4j记录日志

    Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI 组件.甚至是套接口服务器.NT 的事件记录器.UNIX Syslog ...

  7. 前端:一键清除项目中无用的console.log代码

    关注并将「趣谈前端」设为星标 每天定时分享技术干货/优秀开源/技术思维 前言 说起console.log调试,不用多说,那是非常的好用,开发中帮助我们解决了不少Bug.我们经常能在开发环境中看见这一坨 ...

  8. log4jdbc oracle,通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql

    通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql 通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql 说一下配置: 服务器weblogic ...

  9. python切面异常处理_Spring项目中优雅的异常处理

    Spring项目中优雅的异常处理 前言 如今的Java Web项目多是以 MVC 模式构建的,通常我们都是将 Service 层的异常统一的抛出,包括自定义异常和一些意外出现的异常,以便进行事务回滚, ...

最新文章

  1. consul安装配置使用
  2. python3报错处理:UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1
  3. Shiro 那点事儿
  4. React Native For Android 环境搭建
  5. qtmessagebox对话框里自定义按钮文本_Word里表格都是这么来的 — 生成绘制表格有技巧...
  6. python基础教程:强制数据类型转换教程及实例
  7. Spring的refresh()方法调用过程
  8. linux吉祥物的名字,知道Linux的吉祥物的名字和性别吗
  9. c语言条件编译include,7.1编译与预处理-include-c学习 | 时刻需
  10. [UWP]理解ControlTemplate中的VisualTransition
  11. sonar jacoco 覆盖率为0_接口测试代码覆盖率(jacoco)方案分享
  12. 严蔚敏数据结构习题第十章
  13. 条码标签制作软件导入数据库(TXT)批量打印条码
  14. 2020中国网络安全年会论文发布 知道创宇ZoomEye引领全球网空测绘
  15. 【MATLAB】遗传算法(GA)求解TSP问题
  16. 微信商户号25位招商银行号
  17. 2021级新生程序设计班级天梯赛:2-2 《肖申克的救赎》
  18. 《自然语言处理学习之路》 13 RNN简述,LSTM情感分析
  19. 微前端之实现方式和项目分析、实践主子应用启动配置、vue2、vue3、react15、react16 子应用的配置
  20. ARChon 分析之一:下载使用ARChon

热门文章

  1. 2019 — 让我们“做时间的朋友”
  2. C语言【程序48】题目:八进制转换为十进制、二进制转换为十进制、十进制转换为二进制 、十进制转换为八进制、十六进制转换为十进制、十进制转换为十六进制
  3. 心理学在线调查平台asp.net气质测试
  4. B面百度,一家科技公司的社会担当
  5. python横线怎么打_Python中的各种下划线
  6. UEditor编辑器存储型XSS漏洞
  7. Docker 基础篇
  8. python嵌套是什么意思_python中的嵌套字典是什么意思?
  9. npm run dev报错opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]
  10. cocos creator 四叉树碰撞系统Demo