背景:
当前的日志都是以服务为单元独立存在的,而当前业务逻辑可能是跨多个服务才最终实现。当某一次请求出现问题,可能需要跨跃多个服务进行排查,相对比较耗时耗力。
于是便有了通过请求traceId(服务/服务间已实现)查询整个服务调用链路的需求。
需求
针对某一次请求,可以通过traceId查询出当前请求的完整链路日志。
实现
�1.统一日志pattern
[%d{yyyyMMdd HH:mm:ss}][${appName}][%thread][%level][%logger{36}][%X{traceId}][%X{userId}][%X{bizType}][%X{bizTypeData}][%msg]%n
字段描述:
- yyyyMMdd HH:mm:ss:日志时间(框架提供)
- appName: 服务名称(框架提供)
- thread:线程(框架提供)
- level:日志级别 trace/debug/info/warn/error(框架提供)
- logger:当前日志出处类(框架提供)
- traceId:链路Id(框架提供)
- userId:当前操作人Id(框架提供)
- bizType:业务类型(独立埋点)
- bizTypeData:业务数据(独立埋点)
独立埋点方式
XyLogUtil.init(bizType, bizTypeData);
log.info("init..bizType....");
XyLogUtil.destroy();
init与destroy必须成对出现