Java基础、中级、高级、架构面试资料

SpringBoot 兼容各日志框架的方法

JAVA herman 5433浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

上篇我认为我已经讲的很明白了 Springboot 兼容各日志框架的做法,但是还有网友在群里问我,微信公众号留言,因此我这里再花一篇时间来说明 SpringBoot 整合日志框架的方法。

各种框架遗留问题

Springboot 使用(slf4j+logback): Spring 使用(commons-logging)、Hibernate 使用(jboss-logging)、MyBatis 使用 (Apache Commons Logging)等。

统一日志记录,就是让别的框架和我一起统一使用slf4j进行输出?

各种框架日志适配

如何让系统中所有的日志都统一到slf4j:

  • 将系统中其他日志框架先排除出去;
  • 用中间包来替换原有的日志框架;
  • 我们导入slf4j其他的实现

SpringBoot日志关系

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

上面的 starter 默认会引入下面的日志 jar 包。SpringBoot使用它来做日志功能:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-logging</artifactId>
</dependency>

底层依赖关系:

SpringBoot 底层日志框架依赖关系

总结:

  1. SpringBoot底层也是使用slf4j+logback的方式进行日志记录
  2. SpringBoot也把其他的日志都替换成了slf4j;
  3. 中间替换包?
@SuppressWarnings("rawtypes")
public abstract class LogFactory {

    static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j";

    static LogFactory logFactory = new SLF4JLogFactory();

日志框架替换

如果我们要引入其他框架?一定要把这个框架的默认日志依赖移除掉!Spring框架用的是commons-logging:

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<exclusions>
		<exclusion>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » SpringBoot 兼容各日志框架的方法