
本文档介绍了如何在 Spring Boot 项目中使用 Logback 将 MDC(Mapped Diagnostic Context)上下文值记录到 New Relic 中。通常,虽然 MDC 值可以在控制台和本地日志文件中正确显示,但可能无法在 New Relic 中看到。本文将提供配置步骤,确保 MDC 值能够正确地转发到 New Relic 代理,从而实现更全面的日志监控。
要将 MDC 上下文值记录到 New Relic,需要启用 New Relic 代理的配置,使其能够转发诊断上下文数据。这需要在 newrelic.yml 文件中进行配置。
打开或创建 newrelic.yml 文件,并添加以下配置:
common: &default_settings
# 转发诊断上下文到 New Relic 代理
forwarding:
context_data:
enabled: true这个配置片段告诉 New Relic 代理从日志事件中提取 MDC 数据,并将其作为属性附加到 New Relic 事件中。 enabled: true 确保了 MDC 数据的转发功能被启用。
以下是一个示例 Logback 配置文件 logback.xml,展示了如何配置 Logback 以使用 New Relic 提供的编码器和异步 Appender:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.FileAppender">
<file>logs/logback-app.log</file>
<append>false</append>
<!-- 编码器默认使用 ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder class="com.newrelic.logging.logback.NewRelicEncoder">
</encoder>
</appender>
<appender name="ASYNC" class="com.newrelic.logging.logback.NewRelicAsyncAppender">
<appender-ref ref="STDOUT" />
</appender>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%X{request-id} %d %-5level [%thread] %logger{0}: %msg%n</pattern>
</encoder>
</appender>
<root level="TRACE">
<appender-ref ref="ASYNC" />
<appender-ref ref="Console" />
</root>
</configuration>关键点:
以下是一个简单的 Spring Boot 代码示例,展示了如何将值放入 MDC 上下文中:
import org.slf4j.MDC;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class ExampleService {
private static final Logger logger = LoggerFactory.getLogger(ExampleService.class);
public void processRequest(String requestId) {
MDC.put("request-id", requestId);
try {
logger.info("Processing request...");
// 模拟一些业务逻辑
} finally {
MDC.remove("request-id"); // 确保在请求处理完成后清除 MDC
}
}
}在这个例子中,MDC.put("request-id", requestId) 将 request-id 放入 MDC 中。 MDC.remove("request-id") 确保在请求处理完成后,从 MDC 中移除该值,避免影响后续的请求。 务必使用 try-finally 块,确保 MDC 在任何情况下都能被清理。
通过启用 New Relic 代理的 forwarding.context_data.enabled 配置,并正确配置 Logback 使用 New Relic 提供的编码器和 Appender,你可以成功地将 MDC 上下文值记录到 New Relic 中。 这使得你可以更全面地监控你的应用程序,并更容易地诊断问题。记住要始终清理 MDC 上下文,并验证 New Relic 中是否正确显示了 MDC 数据。
以上就是如何在 New Relic 中记录 MDC 上下文值的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号