浅谈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读取文件的四种不同方法比对
May 18 Python
Python自动化开发学习之三级菜单制作
Jul 14 Python
python中logging库的使用总结
Oct 18 Python
查看Django和flask版本的方法
May 14 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
python接口自动化框架实战
Dec 23 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 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
php at(@)符号的用法简介
2009/07/11 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
华为的Java面试题
2014/03/07 面试题
《春雨》教学反思
2014/04/24 职场文书
公司授权委托书范文
2014/09/21 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
2016春季运动会前导词
2015/11/25 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS