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
Note
この機能は、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 アプリ内の特定のロガーのランタイム ログ レベルを変更できます。
次の例では、ログ レベル 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 ログ フレームワークがサポートされています。
- Log4j2 (バージョン 2 のみ)。*
- Logback
- jboss-logging
さまざまなログ記録フレームワークでサポートされるログ レベル
ログ記録フレームワークが異なると、サポートされるログ レベルが異なります。 JVM 診断プラットフォームでは、他のフレームワークよりも適する特定のフレームワークがあります。 ログ レベルを変更する前に、使用しているログ レベルがフレームワークとプラットフォームでサポートされていることを確認してください。
フレームワーク | OFF | FATAL | ERROR | WARN | INFO | デバッグ | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | はい | イエス | イエス | イエス | イエス | イエス | はい |
Logback | はい | いいえ | イエス | イエス | イエス | イエス | はい |
jboss-logging | いいえ | イエス | イエス | イエス | イエス | イエス | はい |
プラットフォーム | はい | いいえ | イエス | イエス | イエス | イエス | はい |
ログ レベルの一般的な可視性
ログ レベル | FATAL | ERROR | WARN | INFO | デバッグ | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
FATAL | はい | |||||
ERROR | はい | はい | ||||
WARN | はい | イエス | はい | |||
INFO | はい | イエス | イエス | はい | ||
DEBUG | はい | イエス | イエス | イエス | はい | |
TRACE | はい | イエス | イエス | イエス | イエス | はい |
たとえば、ログ レベルを INFO
に設定すると、アプリによりレベル FATAL
、ERROR
、WARN
、INFO
のログが出力され、レベル DEBUG
と TRACE
のログは出力されません。