Azure Container Apps で Java アプリケーションのトラブルシューティングを行う動的ロガー レベルを設定する (プレビュー)

Azure Container Apps プラットフォームには、Java 開発者専用の組み込み診断ツールが用意されており、Azure Container Apps で実行されている Java アプリケーションのデバッグとトラブルシューティングをより簡単かつ効率的に行うことができます。 重要な機能の 1 つは、ロガー レベルの動的な変更です。これにより、既定では非表示になっているログの詳細にアクセスできます。 有効にすると、コードを変更したり、ログ レベルを変更するときにアプリを強制的に再起動したりすることなく、ログ情報が収集されます。

作業を開始する前に、Azure CLI の Azure Container Apps 拡張機能をバージョン 0.3.51 以上にアップグレードする必要があります。

az extension update --name containerapp

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 アプリ内の特定のロガーのランタイム ログ レベルを変更できます。

次の例では、ログ レベル info でロガー名 org.springframework.boot を使用します。 これらの値は、必ず独自のロガー名とレベルに一致するように変更してください。

特定のロガーのログ レベルを調整するには、次のコマンドを使用します。

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

ロガー レベルの変更が有効になるまでに最大 2 分かかる場合があります。 完了したら、ログ ストリーム またはその他のログ オプションからアプリケーション ログを確認できます。

サポートされている Java ログ フレームワーク

次の Java ログ フレームワークがサポートされています。

さまざまなログ記録フレームワークでサポートされるログ レベル

ログ記録フレームワークが異なると、サポートされるログ レベルが異なります。 JVM 診断プラットフォームでは、他のフレームワークよりも適する特定のフレームワークがあります。 ログ レベルを変更する前に、使用しているログ レベルが、フレームワークとプラットフォームの両方でサポートされていることを確認してください。

フレームワーク OFF FATAL ERROR WARN INFO デバッグ TRACE ALL
Log4j2 はい イエス イエス イエス イエス イエス イエス はい
Logback はい いいえ イエス イエス イエス イエス イエス はい
jboss-logging いいえ イエス イエス イエス イエス イエス はい いいえ
プラットフォーム はい いいえ イエス イエス イエス イエス はい いいえ

ログ レベルの一般的な可視性

ログ レベル FATAL ERROR WARN INFO デバッグ TRACE ALL
OFF
FATAL はい
ERROR はい はい
WARN はい イエス はい
INFO はい イエス イエス はい
DEBUG はい イエス イエス イエス はい
TRACE はい イエス イエス イエス イエス はい
ALL 有効 イエス イエス イエス イエス イエス はい

たとえば、ログ レベルを DEBUG に設定すると、アプによりレベル FATALERRORWARNINFODEBUG のログが出力され、レベル TRACEALL のログは出力されません。