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

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

开始之前,需要将 Azure CLI 中的 Azure 容器应用扩展升级到 0.3.51 或更高版本。

az extension update --name containerapp

为 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 诊断平台中,某些框架比其他框架更受支持。 在更改日志记录级别之前,请确保框架和平台都支持使用的日志级别。

框架 OFF 致命 ERROR 警告 INFO DEBUG TRACE ALL
Log4j2
Logback No
jboss-logging
平台 No

日志级别的常规可见性

日志级别 FATAL ERROR 警告 INFO DEBUG TRACE ALL
OFF
致命
ERROR
警告
信息
调试
TRACE
ALL

例如,如果将日志级别设置为 DEBUG,则应用将使用级别 FATALERRORWARNINFODEBUG 打印日志,并且不会打印级别 TRACEALL 的日志。