浅谈spring boot 集成 log4j 解决与logback冲突的问题


Posted in Python onFebruary 20, 2020

现在很流行springboot的开发,小编闲来无事也学了学,开发过程中遇见了log4j日志的一个小小问题,特此记载。

首先在pox.xml中引入对应的maven依赖:

<!-- 引入log4j-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j</artifactId>
      <version>1.3.8.RELEASE</version>
    </dependency>

然后在src/resources/下新建log4j.properties文件(摘抄自网上):

log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
log4j.appender.info.File=d://springboot3/logs/api_services_info.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
log4j.appender.error.File=d://springboot3/logs/error/api_services_error.log
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
log4j.appender.DEBUG.File=d://springboot3/logs/debug/api_services_debug.log

在application.yml中加入如下配置:

logging:
 config: src/main/resources/log4j.properties

至此,log4j的配置完毕,启动项目,发现会报错:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/tony/.m2/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:/C:/Users/tony/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-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]
12:02:26.963 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-actuator/target/classes/, /spring-boot-devtools/target/classes/, /spring-boot/target/classes/, /spring-boot-starter-[\w-]+/, /spring-boot-autoconfigure/target/classes/, /spring-boot-starter/target/classes/]
12:02:26.969 [main] DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/F:/work_intel/code/demo1/target/classes/]
Logging system failed to initialize using configuration from 'src/main/resources/log4j.properties'

这是因为与logback的冲突并未解决,导致启动失败,根据上面的报错信息,找到logback-classic-1.2.3.jar和slf4j-log4j12-1.7.25.jar的相应位置删除,并在pom.xml中加入如下排除代码:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <!-- 排除默认的logback日志,使用log4j-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

启动发现一切正常,至此,log4j的配置完毕。

以上这篇浅谈spring boot 集成 log4j 解决与logback冲突的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取指定网页上所有超链接的方法
Apr 04 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
Python的log日志功能及设置方法
Jul 11 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
python实现批量命名照片
Jun 18 Python
Python OpenCV读取显示视频的方法示例
Feb 20 #Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 #Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 #Python
python logging.basicConfig不生效的原因及解决
Feb 20 #Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 #Python
python logging设置level失败的解决方法
Feb 19 #Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 #Python
You might like
中国第一家无线电行
2021/03/01 无线电
一个php作的文本留言本的例子(四)
2006/10/09 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
vant实现购物车功能
2020/06/29 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
库房主管岗位职责
2013/12/31 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
室内趣味活动方案
2014/08/24 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
Python字符串常规操作小结
2022/04/03 Python
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python