TLog是一种轻量级、无侵入式的微服务日志追踪方案,可以作为组件集成到应用中。它通过在应用日志中自动嵌入并传递全局唯一的链路标识,解决跨服务调用时日志碎片化、难以关联的问题,提升故障排查的效率。
- 采用
TraceId(全局链路ID)和SpanId(链路节点ID)双层标识。TraceId在请求入口(如网关)生成,贯穿整条链路SpanId标识单个节点并体现父子调用关系(如0, 0.1, 0.1.1)
- 适配多种通信协议,支持同步RPC调用(如Spring Cloud Feign、Dubbo)、异步任务(线程池、MQ消息队列)等场景,确保标识在复杂调用中不丢失。
- 不替换现有日志框架(Logback、Log4j2、Log4j),而是通过提供自定义的编码器,无侵入地将链路标识嵌入到每行日志中,对性能影响极小。
- 如在logback-spring.xml中自定义编码器,在pattern中引用
TraceId和SpanId:<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{60} [%X{tlogTraceId}] [%X{tlogSpanId}] - %msg%n</pattern> <charset>UTF-8</charset> </encoder>
- 如在logback-spring.xml中自定义编码器,在pattern中引用