
在 New Relic 中记录 MDC 上下文值
通常情况下,虽然 MDC 值能在本地控制台或日志文件中正常输出,但可能无法在 New Relic 中显示。本文将提供一种解决方案,通过配置 newrelic.yml 文件来启用 Diagnostic Context 的转发,从而使 MDC 值能够正确地记录到 New Relic。
配置 newrelic.yml 文件
New Relic 提供了一个标志,用于将 Diagnostic Context 转发到 New Relic Agent。我们需要在 newrelic.yml 文件中启用此标志。
打开你的 newrelic.yml 文件,并添加或修改以下配置:
common: &default_settings
# forwad Diagnostic Context to new relic agent
forwarding:
context_data:
enabled: true解释:
- common: 定义了通用配置。
- forwarding: 定义了转发相关的配置。
- context_data: 定义了上下文数据转发的配置。
- enabled: true: 启用 Diagnostic Context 的转发。
注意事项:
- 确保你的 newrelic.yml 文件位于 Spring Boot 项目的正确位置(通常是 src/main/resources 目录下)。
- 确保 New Relic Agent 已正确安装并配置。
- 修改 newrelic.yml 文件后,需要重启 Spring Boot 应用才能使配置生效。
示例 Logback 配置 (logback.xml)
虽然上述 newrelic.yml 的配置是关键,但为了确保 MDC 值被正确设置和使用,这里提供一个 Logback 配置示例供参考。请注意,你可能已经有类似的配置,只需确保使用了 NewRelicEncoder 和 NewRelicAsyncAppender。
logs/logback-app.log false %X{request-id} %d %-5level [%thread] %logger{0}: %msg%n
解释:
- NewRelicEncoder: 使用 New Relic 提供的编码器来格式化日志消息,以便 New Relic Agent 可以正确解析和收集。
- NewRelicAsyncAppender: 使用异步 appender 来提高性能,避免阻塞主线程。
总结
通过在 newrelic.yml 文件中启用 Diagnostic Context 的转发,以及正确配置 Logback,可以确保 MDC 上下文值能够正确地记录到 New Relic 中。这对于追踪请求、排查问题以及监控应用性能非常有帮助。 请确保按照上述步骤操作,并根据实际情况进行调整。如果问题仍然存在,请检查 New Relic Agent 的版本和配置,以及 Logback 的依赖是否正确。










