Spring 按业务模块输出日志到不同的文件

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 按业务模块输出日志到不同的文件相关的知识,希望对你有一定的参考价值。

一、背景

在我们开发的过程中,可能存在如下情况:
1、有些时候我们需要调用第三方的接口,一般情况下,调用接口,我们都会记录请求的入参和响应的。如果我们自己系统的日志和第三方的日志混合到一个日志文件中,那么可能查找日志就比较麻烦了。那么我们是否可以将第三方系统的日志单独放到另外的文件中呢?

2、或者有些时候我们系统需要进行数据迁移,如果某条数据迁移失败了,是否单独放到一个日志文件中比较清晰呢?

二、需求

从上图中可以看到我们的需求比较简单

1、系统启动日志和 login 模块日志记录到 springboot-spring.log 文件中。
2、第三方业务(QQ)模块的日志记录到 springboot-qq.log文件中。
3、第三方业务(QQ)模块提供了一个login(loginName)方法,方法的入参loginName需要记录到springboot-qqLoginName.log文件中,模拟一、背景中提到的数据迁移失败,记录失败的数据到单独的日志文件中。

三、技术实现

1、采用的日志框架
此处使用logback来完成日志的记录,因为SpringBoot应用程序默认的就是采用的logback来记录日志。

2、如果实现分模块、分文件记录日志
1、 编写appender,这个可以简单的理解日志需要输出到哪里。
比如:

%dyyyy-MM-dd HH:mm:ss.SSS [$PID:- ] [%thread] %-5level

以上是关于Spring 按业务模块输出日志到不同的文件的主要内容,如果未能解决你的问题,请参考以下文章

Log4j将不同Package的日志输出到不同的文件

Log4j按级别输出日志到不同文件配置

python----日志模块loggin的使用,按日志级别分类写入文件

springboot 使用logback按业务进行日志分离

spring-logback

Log4j2 的分模块/分包日志输出