一、目标

在零配置的情况下,无感知的支持各个中间件打印,支持链路、支持对接第三方观测系统。

Git地址:https://gitlab.sdo.com/basisplatform/sqg-env-config

二、Features

序号 特性 实现方式 备注 进度
1 异步打印,不影响主流程耗时 AsyncAuditPool 开启线程池,对外方法,统一打印 完成
2 日志分层 统一logger name,logback.xml 设置不同的日志打印方式 完成
3 支持controller http请求 httpserlvet和切面结合 traceId的塞入改为在拦截器或者是filter里 完成
4 支持resttemplate中间件日志打印 完成
5 支持rabbitmq中间件日志打印 待测试
6 支持kafka中间件日志打印 进行中
7 支持mysql日志打印 使用druid自定义filter实现,暂时只支持mysql8
改为使用mybatis的plugin日志打印(后续考虑直接切jdbcTemplate) #开启Druid 自定义Filter配置spring:datasource:druid:filters: dbauditlog 完成
8 支持Redis日志打印 redisTemplate自定义切面 需要支持全部操作 完成
8 支持xxl-job日志打印 后续
10 支持hbase日志打印 后续
11 对接第三方监控??
12 是否需要支持log的格式??
13 支持mongo日志打印??
14 支持dubbo日志打印 dubbo filter和RpcContext 完成

三、日志格式

1、server.log

timestamp,    tracedId,     spanId,    remoteAddr,    endpoint(访问的入口),    Method(web请求下有),     sequence,     costTime,    globalServiceId,    serviceName,    req,    res

2、client.log

timestamp,    tracedId,     spanId,     parentSpanAction,    remoteAddr,    endpoint(访问的入口),    Method(web请求下有),     sequence,     costTime,    req,    res

3、日志分割字符

改为:三个空格+英文逗号

四、HOW TO USE IT

以sq-mall-administration举例:

4.1 引入依赖

<dependency>

		<groupId>com.sqg</groupId>
		<artifactId>sqg-env-config</artifactId>
		<version>1.0.1-RELEASE</version>

</dependency>

引入依赖后默认就已经拥有Redis、mq、web、restTemplate等监控能力

4.2 删除之前的aop打印日志

移除AllAOP和其他继承了BaseAop的切面类