log4j2 - 将 jaeger trace id 和 span id 添加到 log4j2 日志
问题描述
我想在日志中注入 x-b3-traceid 和 x-b3-spanid,其模式如图所示-
property name="PATTERN" value="%h %l %u [%date{dd/MMM/yyyy:HH:mm:ss.SSS}] "%r" %s %b "%i{Referer}" "%i{User-Agent}" [trace=%responseHeader{X-B3-TraceId},span=%i{X-B3-SpanId}] %D"
对于 zipkins,有可用的库,例如
勇敢的上下文-log4j2 - ( https://github.com/openzipkin/brave/tree/master/context/log4j2 )
春云侦探。(https://cloud.spring.io/spring-cloud-sleuth/)如何在使用 jaeger 时添加它?
解决方案
继续使用 Jaegar 的最佳方法是不使用 JAEGAR CLIENT!Jaegar 有能力收集 Zipkin 跨度。
https://www.jaegertracing.io/docs/1.8/getting-started/#migrating-from-zipkin
您应该利用这一点并使用以下 Sleuth+Zipkin 依赖项,并在您的 Spring Boot 应用程序中排除 Jaegar 代理 jar。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
以上将默认发送 Zipkin spans 到 http://localhost:9411。您可以通过覆盖 zipkin 基本 URL 在 Spring Boot 应用程序中覆盖它以轻松指向 Jaegar 服务器。
spring.zipkin.base-url=http://your-jaegar-server:9411
Sleuth 将完成所有繁重的工作,默认日志记录将记录 span 和 traceIds。
在log4j2.xml
文件中,您只需要提及
[%X]
我将把这种方法的一个工作示例上传到我的 GitHub 并分享链接。
编辑1:
您可以在此处找到示例代码:
推荐阅读
- wordpress - 如何使用插件自定义模板覆盖 WordPress 标题
- php - 一种排序角色的方法
- c# - 使用 Quartz.net 从 asp.net MVC Web 应用程序在后台发送每日邮件
- mysql - MySql JOIN 三个表并计算所有给定月份的百分比
- hyperledger-fabric - Hyperledger Fabric Node js从通道同步块
- c++ - 每次迭代遍历 Mat 为 64x64
- css - css vmax 在 Chrome 79 中不能正常工作?
- php - 我使用了 codeigniter zip 类,所有文件下载 0kb
- arrays - 在 Flutter 中将数组解析为字符串并返回
- jquery - 如何通过 JQuery 查找和禁用按钮