Azure Container Apps 平臺提供專為 Java 開發人員提供的內建診斷工具,可協助開發人員更輕鬆且有效率地偵錯和疑難解答其在 Azure Container Apps 上執行的 Java 應用程式。 其中一個主要功能是動態記錄器層級變更,可讓您存取預設隱藏的記錄詳細數據。 啟用時,會收集記錄資訊,而不需修改程序代碼,或強制您在變更記錄層級時重新啟動應用程式。
開始之前,您必須在 Azure CLI 中檢查 Azure Container Apps 延伸模組:
az extension show --name containerapp
如果未安裝擴充功能,請先安裝。 如果已安裝 Azure Container Apps 擴充功能,它應該是 0.3.51 版或更新版本。
注意
此功能與在 Java 8 或更新版本上執行的應用程式相容。
為您的 Java 應用程式啟用 JVM 診斷
使用 Java 診斷工具之前,您必須先為您的 Azure Container Apps 啟用 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 診斷平臺中,某些架構比其他架構支援得更好。 變更記錄層級之前,請確定架構和平台支援您使用的記錄層級。
| 架構 | 關閉 | 致命的 | 錯誤 | 警告 | 資訊 | 偵錯 | 追踪 |
|---|---|---|---|---|---|---|---|
| Log4j2 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
| Logback | 是的 | 無 | 是的 | 是的 | 是的 | 是的 | 是的 |
| jboss-日誌記錄 | 無 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
| 平台 | 是的 | 無 | 是的 | 是的 | 是的 | 是的 | 是的 |
記錄層級的一般可見性
| 記錄層級 | 致命的 | 錯誤 | 警告 | 資訊 | 偵錯 | 追踪 |
|---|---|---|---|---|---|---|
| OFF | ||||||
| 致命 | 是的 | |||||
| 錯誤 | 是的 | 是的 | ||||
| 警告 | 是的 | 是的 | 是的 | |||
| 資訊 | 是的 | 是的 | 是的 | 是的 | ||
| 調試 | 是的 | 是的 | 是的 | 是的 | 是的 | |
| 跟蹤 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
例如,如果您將記錄層級設定為 INFO,則應用程式會以層級、FATAL、ERROR、 WARN和 來列印具有層級INFODEBUG和 TRACE的記錄檔。