背景:

当前的日志都是以服务为单元独立存在的,而当前业务逻辑可能是跨多个服务才最终实现。当某一次请求出现问题,可能需要跨跃多个服务进行排查,相对比较耗时耗力。

于是便有了通过请求traceId(服务/服务间已实现)查询整个服务调用链路的需求。

需求

针对某一次请求,可以通过traceId查询出当前请求的完整链路日志。

实现

7.日志系统 - 图1

�1.统一日志pattern

  1. [%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:业务数据(独立埋点)

独立埋点方式

  1. XyLogUtil.init(bizType, bizTypeData);
  2. log.info("init..bizType....");
  3. XyLogUtil.destroy();

init与destroy必须成对出现