设置动态记录器级别以排查 Azure 容器应用中的 Java 应用程序问题(预览版)

Azure 容器应用平台专门为 Java 开发人员提供了一种内置诊断工具,可帮助开发人员更轻松、高效地调试在 Azure 容器应用上运行的 Java 应用程序并对其进行故障排除。 其中一个关键功能是动态记录器级别更改,可用于访问默认隐藏的日志详细信息。 启用此功能后,收集日志信息时可无需修改代码,在更改日志级别时也无需强制重启应用。

在开始之前,需要在 Azure CLI 中检查 Azure 容器应用扩展:

az extension show --name containerapp

如果未安装扩展,请先安装它。 如果安装了 Azure 容器应用扩展,则它应为 版本 0.3.51 或更高版本。

az extension add -n containerapp

备注

此功能与在 Java 8 或更高版本上运行的应用程序兼容。

为 Java 应用程序启用 JVM 诊断

在使用 Java 诊断工具之前,首先需要为 Azure 容器应用启用 Java 虚拟机 (JVM) 诊断。 此步骤通过在应用中注入高级诊断代理来启用 Java 诊断功能。 在此过程中,应用可能会重启。

若要利用这些诊断工具,可以创建一个启用了这些工具的新容器应用,或更新现有的容器应用。

若要创建启用了 JVM 诊断的新容器应用,请使用以下命令:

az containerapp create --enable-java-agent \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

若要更新现有容器应用,请使用以下命令:

az containerapp update --enable-java-agent \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

更改运行时记录器级别

启用 JVM 诊断后,可以在正在运行的 Java 应用中更改特定记录器的运行时日志级别,而无需重启应用程序。

以下示例使用记录器名称 org.springframework.boot 与日志级别 info。 请确保更改这些值,使其与你自己的记录器名称和级别相匹配。

使用以下命令调整特定记录器的日志级别:

az containerapp java logger set \
  --logger-name "org.springframework.boot" \
  --logger-level "info" \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

记录器级别更改可能需要两分钟才能生效。 完成后,可以从日志流检查应用程序日志。

支持的 Java 记录框架

支持以下 Java 记录框架:

不同记录框架支持的日志级别

不同的记录框架支持不同的日志级别。 在 JVM 诊断平台中,某些框架比其他框架更受支持。 在更改日志记录级别之前,确保框架和平台支持所应用的日志级别。

框架 关闭 致命 错误 警告 信息 调试 追踪
Log4j2
Logback
jboss 日志
平台

日志级别的常规可见性

日志级别 致命 错误 警告 信息 调试 追踪
OFF
致命
错误
警告
信息
调试
跟踪

例如,如果将日志级别设置为 INFO,则应用会打印级别 FATALERRORWARNINFO 的日志,而不会打印级别 DEBUGTRACE 的日志。