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

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

作業を開始する前に、Azure CLI で Azure Container Apps 拡張機能を確認する必要があります。

az extension show --name containerapp

拡張機能がインストールされていない場合は、最初にインストールします。 Azure Container Apps 拡張機能がインストールされている場合は、バージョン 0.3.51 以降である必要があります。

  • インストールする
  • 更新
az extension add -n containerapp

注

この機能は、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>

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

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

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

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

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

フレームワーク オフ 致死 エラー 警告する 情報 デバッグ 跡
Log4j2 はい はい はい はい はい はい はい
Logback はい いいえ はい はい はい はい はい
jboss-logging いいえ はい はい はい はい はい はい
プラットフォーム はい いいえ はい はい はい はい はい

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

ログ レベル 致死 エラー 警告する 情報 デバッグ 跡
オフ
致死 はい
エラー はい はい
警告する はい はい はい
情報 はい はい はい はい
デバッグ はい はい はい はい はい
跡 はい はい はい はい はい はい

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