springboot 使用logback按业务进行日志分离
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 使用logback按业务进行日志分离相关的知识,希望对你有一定的参考价值。
参考技术A 开发中,为了方便日志跟踪,我们可能会需要对日志文件进行分离,比如按模块分离,业务分离等等,方便上线后对问题进行跟踪定位。对于模块间分离常常比较简单,可以直接需要包路径匹配进行区分。
但实际开发中,我们可能遇到一个问题,就是很多个业务的入口是相同的,此时无法根据包名区分,但还是希望对当前消息的整个处理过程是在单独的业务日志文件中,那么如何处理呢???
这里推荐使用MDC,进行处理。
比如:在消息接收的时候,首先判断下消息的业务类型,再将要写入的文件名放到MDC中。
logback配置:
我们需要考虑当MDC中没有指定logFileName参数时,给出默认值custom。
mdc保存在threadLocal中,所有当前线程整个处理都会输出到指定的log文件中,需要需要注意一点的是,mdc一定要注意清理哦!!在使用完成之后务必进行一次clear.
Springboot项目使用Logback把日志输出到控制台或输出到文件
参考技术A Logback简介: Logback是一个开源的日志组件,师出同门,与log4j一样,logback也是由Ceki Gülcü开发的开源日志组件,可以说是log4j的改进版;在现如今的项目中,logback的出现次数越来越多,是目前主流首选的日志记录工具。
logback分成三个模块:logback-core,logback- classic,logback-access(这个不常用)。
启动项目时,logback会按照如下顺序扫描配置文件:
以上任何一项找到了,就不进行后续扫描,按照对应的配置进行logback的初始化,可从控制台输出信息中查看加载的配置文件。
在Springboot项目中可以自定义logback配置文件名及文件位置
要想让Springboot项目识别到该logback配置文件,只需要在Springboot配置文件中定义好配置文件的加载路径即可如下所示:
负责写日志的组件,有两个必要属性name和class
encoder节点负责两件事情:
以下是一个常用配置:
配合appender使用,<filter>是<appender>的一个子节点,表示在当前给到的日志级别下再进行一次过滤
<logger>用来设置某一个包或者具体某一个类的日志打印级别、以及指定appender。
<logger>可以包含零个或者多个<appender-ref>元素,标识这个appender将会添加到这个logger。
<root>也是<logger>元素,但它是根logger,只有一个level属性,因为它的name就是ROOT
示例:
该 <springProfile> 标签允许我们更加灵活配置文件,可选地包含或排除配置部分。元素中的任何位置均支持轮廓部分。使用该name属性指定哪个配置文件接受配置。可以使用逗号分隔列表指定多个配置文件。
以上是关于springboot 使用logback按业务进行日志分离的主要内容,如果未能解决你的问题,请参考以下文章
如何使用springboot和logback按严重性将日志记录到不同的文件
springboot~logback按level添加不同的颜色