设置动态记录器级别以排查 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 记录框架:
- Log4j2(仅限版本 2.*)
- Logback
- jboss-logging
不同记录框架支持的日志级别
不同的记录框架支持不同的日志级别。 在 JVM 诊断平台中,某些框架比其他框架更受支持。 在更改日志记录级别之前,确保框架和平台支持所应用的日志级别。
框架 | OFF | 致命 | ERROR | 警告 | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
Logback | 是 | No | 是 | 是 | 是 | 是 | 是 |
jboss-logging | 否 | 是 | 是 | 是 | 是 | 是 | 是 |
平台 | 是 | No | 是 | 是 | 是 | 是 | 是 |
日志级别的常规可见性
日志级别 | FATAL | ERROR | 警告 | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
致命 | 是 | |||||
ERROR | 是 | 是 | ||||
警告 | 是 | 是 | 是 | |||
信息 | 是 | 是 | 是 | 是 | ||
调试 | 是 | 是 | 是 | 是 | 是 | |
TRACE | 是 | 是 | 是 | 是 | 是 | 是 |
例如,如果将日志级别设置为 INFO
,则应用会打印级别 FATAL
、ERROR
、WARN
、INFO
的日志,而不会打印级别 DEBUG
和 TRACE
的日志。