全链路调用日志跟踪插件
tip
使用场景推荐
- 线上
介绍
TraceIdInOut 全链路调用日志跟踪插件,主要关注点:追踪玩家请求的全部链路。
以往,我们会通过 userId 来区分请求的唯一性,这种方式只适合中少量的请求中,在大量请求中并不适用。这是因为:
- 当有大量的玩家在线操作时,其他线程的日志也会一起输出并穿行在其中,导致很难筛选出指定请求的全部相关日志。
- 同一用户可能在短时间内请求多次,这样就很难区分该日志是属于哪个请求的。
而全链路调用日志跟踪正是解决该问题的,全链路调用日志跟踪可以为每个请求分配一个唯一标识,并记录在日志中。 通过唯一标识,我们可以快速的在日志中过滤出指定请求的信息。
框架提供的全链路调用日志跟踪特性更是强大,支持跨机器、跨进程。 简单的说,从玩家的请求进来到结束,无论该请求经过了多少个游戏逻辑服,都能精准记录。
打印预览
图中高亮的地方,表示同一个请求所打印的日志。
如何使用
BarSkeletonBuilder builder = ...;
builder.addInOut(new TraceIdInOut());
开启 traceId 特性
使用全链路调用日志跟踪特性时,还需要做一些简单的配置,因为并不是所有的项目都需要该特性。
IoGameGlobalConfig.openTraceId = true;
warning
该配置需要在游戏对外服中设置,因为游戏对外服是玩家请求的入口。