Skip to content

Latest commit

 

History

History
88 lines (77 loc) · 3.94 KB

README.md

File metadata and controls

88 lines (77 loc) · 3.94 KB

common-log

场景:

  • 对于Http请求我们需要输出请求/响应数据,特定请求可以屏蔽日志(如响应Base64图片)
  • 对请求响应日志部分字段进行脱敏
  • 日志链路追踪APM功能(并且在多线程下也能正常使用)
  • 日志策略分环境, 非开发环境不输出控制台日志
    适用于Springboot + SpringMVC5x + Logback

1 加入依赖:

<dependency>
    <groupId>com.weweibuy.framework</groupId>
    <artifactId>common-log</artifactId>
    <version>1.4-SNAPSHOT</version>
</dependency>

2 http日志输出

引入依赖即可, 如需关闭:

application.properites:

common.log.enable = false
  1. 说明 该功能基于: Servlet-Filter,MVC-ControllerAdvice, MVC-Interceptor 组合实现,输出日志准确可信,业务开发完全无感
  2. 特定接口屏蔽日志 方法一: 配置:
    application.properites:
common.log.http-path[0].path = /**          ##  对指定路径进行配置
common.log.http-path[0].methods = GET,POST   ##  对指定请求Method进行配置, 默认全部
common.log.http-path[0].log.disable-req = true   ##  对日志进行配置, 禁止输出请求日志
common.log.http-path[0].log.disable-resp-body = true   ##  对日志进行配置, 禁止输出响应body

方法二: 代码:
实现LogDisableConfigurer接口,增加配置,并将Bean交给Spring管理
eg: CustomPatternReplaceConfig

3 日志脱敏

  1. 实现PatternReplaceConfig接口
    增加字段处方式或增加脱敏规则配置 并将Bean交给Spring管理
  2. 通过 PatternReplaceConfig.addPatternReplace 增加或修改匹配与替换规则
提示: 我们内置部分规则: 可以在 DesensitizationLogMessageConverter 中查看; 
这些字段包括:  
    mobile,phone,phoneNo,certId,idCard,idNo,password,pwd,appSecret,fullName,address
如果这些不满足要求可以通过addPatternReplace方法增加或者替换
  1. 通过配置敏感字段: application.properites:
common.log.http-path[0].path = /**          ##  对指定路径进行配置
common.log.http-path[0].methods = GET,POST   ##  对指定请求Method进行配置, 默认全部
common.log.http-path[0].sensitization.sensitization-fields = password,idNo   ##  需要脱敏的敏感字段
common.log.http-path[0].sensitization.logger = com.weweibuy.framework.common.log.logger.HttpLogger   ##  对指定logger输出的日志脱敏

4 日志链路追踪

引入依赖即可, 如需关闭:
application.properites:

common.log.trace.enable = false
  1. 说明 该功能基于MDC实现,自动为Http请求响应绑定Logback MDC属性为: tid
  2. 多线程MDC值传递
    该功能基于 TTL transmittable-thread-local实现
    首先需要加入依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>transmittable-thread-local</artifactId>
</dependency>  

然后修饰线程池:
修饰线程池
使用Java Agent来修饰JDK线程池实现类

4 日志策略分环境

common-log 模块配置了logback-spring.xml, 只有在spring激活dev环境的情况下才输出控制台日志
非dev环境输入文件日志,默认输出路径为: /logs/${app_name} 文件名: application.log
同时也支持通过环境变量 log.path 指定日志文件输出路径