Azure App Service でのアプリの診断ログの有効化

Note

2024 年 6 月 1 日より、新しく作成されたすべての App Service アプリには、名前付け規則 <app-name>-<random-hash>.<region>.azurewebsites.net を使用して一意の既定のホスト名を生成するオプションが備わります。 既存のアプリ名は変更されません。

例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

詳しくは、App Service リソースの一意の既定のホスト名に関する記事をご覧ください。

このビデオでは、アプリの診断ログを有効にする方法について説明します。

ビデオの手順については、次のセクションでも説明します。

概要

Azure では、組み込みの診断機能により、 App Service アプリのデバッグを容易に行うことができます。 この記事では、診断ログを有効にしてインストルメンテーションをアプリケーションに追加する方法と、Azure によってログに記録された情報にアクセスする方法について説明します。

この記事では、Azure portal と Azure CLI を使用して診断ログを操作します。 Visual Studio で診断ログを使用する方法の詳細については、「 Visual Studio での Azure のトラブルシューティング」を参照してください。

Note

この記事のログ手順に加えて、Azure Monitor の統合ログ機能を使用することもできます。 この機能の詳細については、「ログを Azure Monitor に送信する」のセクションを参照してください。

Type プラットフォーム ログの保存場所 説明
アプリケーションのログ記録 Windows、Linux App Service ファイル システムおよび Azure Storage BLOB アプリケーションのコードによって生成されたメッセージがログに記録されます。 メッセージは、選択した Web フレームワークによって、またはお使いの言語の標準ログ パターンを使用してアプリケーションのコードから直接、生成できます。 各メッセージには、次のいずれかのカテゴリが割り当てられます: 重大エラー警告情報デバッグトレース。 アプリケーションのログ記録を有効にするときに、重大度レベルを設定することにより、ログ記録の詳細さを指定できます。
Web サーバーのログ記録 Windows App Service ファイル システムまたは Azure Storage BLOB W3C 拡張ログ ファイル形式の生 HTTP 要求データ。 各ログ メッセージには、HTTP メソッド、リソース URI、クライアント IP、クライアント ポート、ユーザー エージェント、応答コードなどのデータが含まれます。
詳細なエラー メッセージ Windows App Service ファイル システム クライアントのブラウザーに送信された .htm エラー ページのコピー。 セキュリティ上の理由から、運用環境では詳細なエラー ページをクライアントに送信することはできませんが、App Service では、HTTP コード 400 以上のアプリケーション エラーが発生するたびにエラー ページを保存できます。 ページには、サーバーによってエラー コードが返される理由を特定するのに役立つ情報が記録されている場合があります。
失敗した要求トレース Windows App Service ファイル システム 要求の処理に使用された IIS コンポーネントのトレースや各コンポーネントにかかった時間など、失敗した要求の詳細なトレース情報。 この情報は、サイトのパフォーマンスを向上させたい場合や、特定の HTTP エラーを分離する場合に役立ちます。 失敗した要求ごとに 1 つのフォルダーが生成されます。 このフォルダーには、XML ログ ファイルと、ログ ファイルを表示するための XSL スタイルシートが含まれています。
デプロイ ログ Windows、Linux App Service ファイル システム アプリにコンテンツを発行するときのログ。 デプロイ ログの記録は自動的に行われ、デプロイ ログの構成可能な設定はありません。 デプロイが失敗した理由を判断するのに役立ちます。 たとえば、カスタム デプロイ スクリプトを使用している場合は、デプロイ ログを使用して、スクリプトでエラーが発生する理由を特定できることがあります。

App Service ファイル システムに保存されている場合、ログには価格レベルで使用可能なストレージが適用されます (App Serviceの制限に関するページを参照してください)。

Note

App Service では、アプリケーションのトラブルシューティングに役立つ専用の対話型診断ツールが提供されています。 詳細については、「Azure App Service 診断の概要」を参照してください。

さらに、Azure Monitor などの他の Azure サービスを使用して、アプリのログ記録と監視の機能を向上させることができます。

アプリケーションのログ記録を有効にする (Windows)

Azure portal で Windows アプリのアプリケーション ログ記録を有効にするには、アプリに移動し、 [App Service ログ] を選択します。

[アプリケーション ログ (ファイル システム)][アプリケーション ログ (Blob)] の一方または両方で、 [オン] を選択します。

ファイル システム オプションは、一時的なデバッグ用であり、12 時間で自動的にオフになります。 Blob オプションは、長期的なログ記録用であり、ログを書き込む BLOB ストレージ コンテナーが必要です。 Blob オプションには、ログ メッセージの生成元 VM インスタンスの ID (InstanceId)、スレッド ID (Tid)、さらに細かいタイムスタンプ (EventTickCount) など、ログ メッセージの追加情報も含まれます。

Note

現在、Blob Storage には .NET アプリケーションのログのみ書き込むことができます。 Java、PHP、Node.js、Python のアプリケーション ログは、App Service ファイル システムにのみ保存できます (ログを外部ストレージに書き込むためのコードの変更は必要ありません)。

また、ストレージ アカウントのアクセス キーを再生成する場合、更新されたキーを使用するように、該当するログ記録の構成を再設定する必要があります。 これを行うには、次の手順を実行します。

  1. [構成] タブで、該当するログ機能を [オフ] に設定します。 設定を保存します。
  2. ストレージ アカウントの BLOB へのログを再び有効にします。 設定を保存します。

ログに記録する詳細さのレベルを選択します。 次の表に、各レベルに含まれるログのカテゴリを示します。

Level 含まれるカテゴリ
無効 なし
エラー エラー、クリティカル
警告 警告、エラー、クリティカル
情報 情報、警告、エラー、クリティカル
詳細 トレース、デバッグ、情報、警告、エラー、クリティカル (すべてのカテゴリ)

終わったら、 [保存] を選択します。

Note

BLOB にログを書き込む場合、アプリを削除しても BLOB にログを保持していると、アイテム保持ポリシーは適用されなくなります。 詳細については、「リソースの削除後に発生する可能性があるコスト」を参照してください。

アプリケーションのログ記録を有効にする (Linux/コンテナー)

Azure portal で Linux アプリまたはカスタム コンテナーのアプリケーション ログ記録を有効にするには、アプリに移動し、[App Service ログ] を選択します。

[アプリケーション ログ記録][ファイル システム] を選択します。

[クォータ (MB)] で、アプリケーション ログのディスク クォータを指定します。 [リテンション期間 (日)] で、ログを保持する日数を設定します。

終わったら、 [保存] を選択します。

Web サーバーのログ記録を有効にする

Azure portal で Windows アプリの Web サーバー ログ記録を有効にするには、アプリに移動し、 [App Service ログ] を選択します。

[Web サーバーのログ記録] で、Blob Storage にログを格納する場合は [ストレージ] を選択し、App Service ファイル システムにログを格納する場合は [ファイル システム] を選択します。

[リテンション期間 (日)] で、ログを保持する日数を設定します。

Note

ストレージ アカウントのアクセス キーを再生成する場合は、該当するログ構成を更新後のキーを使用するように設定し直す必要があります。 これを行うには、次の手順を実行します。

  1. [構成] タブで、該当するログ機能を [オフ] に設定します。 設定を保存します。
  2. ストレージ アカウントの BLOB へのログを再び有効にします。 設定を保存します。

終わったら、 [保存] を選択します。

Note

BLOB にログを書き込む場合、アプリを削除しても BLOB にログを保持していると、アイテム保持ポリシーは適用されなくなります。 詳細については、「リソースの削除後に発生する可能性があるコスト」を参照してください。

詳細なエラーのログを記録する

Azure portal で Windows アプリのエラー ページまたは失敗した要求のトレースを保存するには、アプリに移動し、 [App Service ログ] を選択します。

[詳細なエラー ログ] または [失敗した要求のトレース][オン] を選択し、次に [保存] を選択します。

どちらの種類のログも、App Service ファイル システムに格納されます。 最大 50 件のエラー (ファイルまたはフォルダー) が保持されます。 HTML ファイルの数が 50 を超えた場合、古い順にエラー ファイルが自動的に削除されます。

既定では、失敗した要求のトレース機能では、400 から 600 までの HTTP ステータス コードで失敗した要求のログをキャプチャします。 カスタム ルールを指定するには、web.config ファイルの <traceFailedRequests> セクションをオーバーライドします。

コードでログ メッセージを追加する

アプリケーションのコードでは、通常のログ記録機能を使用して、ログ メッセージをアプリケーション ログに送信します。 次に例を示します。

ログのストリーミング

ログをリアルタイムでストリーミングする前に、目的のログの種類を有効にします。 コンソール出力または /home/LogFiles ディレクトリ (D:\home\LogFiles) に格納されており、末尾が .txt、.log、または .htm のファイルに書き込まれた情報が、App Service によってストリーミングされます。

Note

ログ バッファーの種類によってはログ ファイルに書き込まれるため、イベントがストリーム内で正しくない順序で表示される可能性があります。 たとえば、ユーザーがページにアクセスしたときに発生するアプリケーション ログ エントリは、ページ要求の該当する HTTP ログ エントリより前のストリームに表示されることがあります。

Azure Portal の場合

Azure portal でログをストリーミングするには、アプリに移動し、 [ログ ストリーム] を選択します。

Cloud Shell の場合

Cloud Shell でログをライブ ストリーミングするには、次のコマンドを使用します。

重要

このコマンドは、Linux App Service プランでホストされている Web アプリでは機能しない可能性があります。

az webapp log tail --name appname --resource-group myResourceGroup

HTTP などの特定のログの種類をフィルター処理するには、--provider パラメーターを使用します。 次に例を示します。

az webapp log tail --name appname --resource-group myResourceGroup --provider http

ローカル ターミナルの場合

ローカル コンソールでログをストリーミングするには、Azure CLI をインストールしアカウントにサインインします。 ログインした後、Cloud Shell の場合の手順に従います。

アクセス ログ ファイル

ログの種類に Azure Storage BLOB オプションを構成する場合は、Azure Storage で使用できるクライアント ツールが必要です。 詳しくは、「Azure Storage クライアント ツール」をご覧ください。

App Service ファイル システムに格納されているログの場合、ファイルにアクセスする最も簡単な方法は、ブラウザーで次の ZIP ファイルをダウンロードすることです。

  • Linux/custom コンテナー: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Windows アプリ: https://<app-name>.scm.azurewebsites.net/api/dump

Linux/カスタム コンテナーの場合、ZIP ファイルには、Docker ホストと Docker コンテナーの両方のコンソール出力ログが含まれます。 スケールアウトされたアプリの場合、ZIP ファイルには、各インスタンスの 1 セットのログが含まれます。 App Service ファイル システムでは、これらのログ ファイルは /home/LogFiles ディレクトリの内容です。 デプロイ ログは、/site/deployments/ に格納されています。

Windows アプリの場合、ZIP ファイルには、App Service ファイル システムの D:\Home\LogFiles ディレクトリの内容が含まれています。 その構造を次に示します。

ログのタイプ ディレクトリ 説明
アプリケーション ログ /LogFiles/Application/ 1 つ以上のテキスト ファイルが含まれます。 ログ メッセージの形式は、使用するログ プロバイダーによって異なります。
失敗した要求のトレース /LogFiles/W3SVC#########/ XML ファイルと XSL ファイルが含まれます。 書式設定された XML ファイルをブラウザーで表示できます。
詳細なエラー ログ /LogFiles/DetailedErrors/ HTM エラー ファイルが含まれます。 ブラウザーで HTM ファイルを表示できます。
失敗した要求のトレースを表示するもう 1 つの方法は、ポータルでアプリのページに移動します。 左側のメニューから、[問題の診断と解決] を選択して、[失敗した要求トレース ログ] を探し、次にアイコンをクリックして目的のトレースを参照して表示します。
Web サーバー ログ /LogFiles/http/RawLogs/ W3C 拡張ログ ファイル形式を使用して書式設定されたテキスト ファイルが含まれます。 これらのファイルは、テキスト エディターまたは Log Parser などのユーティリティを使用して読み取ることができます。
App Service では、s-ips-computername、または cs-version フィールドはサポートされていません。
デプロイ ログ /LogFiles/Git/ および /deployments/ 内部デプロイ プロセスによって生成されたログと、Git デプロイのログが含まれます。

ログを Azure Monitor に送信する

Azure Monitor の統合により、診断設定を作成して、ストレージ アカウント、イベント ハブ、Log Analytics にログを送信できます。 診断設定を追加すると、App Service がアプリ設定をアプリに追加し、それによってアプリの再起動がトリガーされます。

診断設定

サポートされるログの種類

サポートされているログの種類とその説明の一覧については、「Microsoft.Web でサポートされているリソース ログ」を参照してください。

ネットワークに関する考慮事項

診断設定の制限については、送信先の制限に関する診断設定の公式ドキュメントを参照してください。

次のステップ