日志编辑

Elastic Java APM 代理提供以下日志功能

这些功能是 应用程序日志摄取策略 的一部分。

ecs-logging-java 库也可以用于使用 ECS 日志 格式,无需 APM 代理。当与 Java APM 代理一起部署时,代理将提供 日志关联 ID。

日志关联编辑

日志关联 允许您导航到属于特定跟踪的所有日志,反之亦然:对于特定日志,请查看它是在什么上下文中记录的以及用户提供了哪些参数。

从 APM 代理版本 1.30.0 开始,日志关联默认启用。在以前的版本中,必须通过将 enable_log_correlation 配置变量设置为 true 来显式启用日志关联。

为了将应用程序中的日志与 Elastic APM Java 代理捕获的跟踪和错误关联起来,代理将以下 ID 注入到 slf4j-MDC- 等效于 支持的日志框架

对于没有提供像 java.util.logging (JUL) 这样的 MDC 的框架,只有在使用 ECS 日志库或使用 日志重新格式化 时才支持关联。

对于纯文本日志,需要修改日志配置的模式布局,以便将 MDC 值写入日志文件。如果您使用的是 Logback 或 log4j,请将 %X 添加到格式中以记录所有 MDC 值,或将 %X{trace.id} 添加到格式中以仅记录跟踪 ID。

当应用程序以 ECS 格式记录日志(通过使用 ecs-logging-java日志重新格式化)但没有提供服务字段时,代理将自动从其自身配置中提供回退值以提供服务级关联

日志重新格式化(实验性)编辑

代理可以自动将应用程序日志重新格式化为 ECS 格式,无需添加对 ecs-logging-java 的依赖关系,修改应用程序日志配置,并使应用程序始终使用 ECS 日志格式。简而言之,它在运行时提供 ECS 日志的优势,而无需对应用程序进行任何更改。

日志重新格式化由 log_ecs_reformatting 配置选项控制,默认情况下禁用。

重新格式化的日志将包含 跟踪和服务关联 ID。

错误捕获编辑

代理自动捕获发送到记录器的异常,这些异常通过类似 logger.error("message", exception) 的调用发送。

这样做时,error.id 也将添加到 MDC 中,用于从 1.16.0 开始的 日志关联

因此,当向记录器报告异常时

  • 代理使用提供的异常向 APM 服务器报告错误
  • 生成一个 error.id 并将其注入到记录器调用期间的记录器 MDC 中
  • 如果日志格式允许,记录器输出将包含 error.id(纯文本仍然需要一些配置)

日志发送(实验性)编辑

代理可以自动捕获日志并直接发送到 APM 服务器,这允许摄取日志事件,而无需依赖 filebeat。日志发送由 log_sending 配置选项控制,默认情况下禁用。