ASP.NET または ASP.NET Core アプリケーションの診断トレース ログを ILogger、NLog、log4Net、または System.Diagnostics.Trace から Azure Application Insights に送信します。 Python アプリケーションの場合は、Azure Monitor 用の OpenCensus Python の AzureLogHandler を使用して、診断トレース ログを送信します。 その後、探索して検索できます。 これらのログは、アプリケーションの他のログ ファイルとマージされます。 これらを使うと、各ユーザー要求に関連付けられているトレースを識別し、他のイベントや例外レポートと関連付けることができます。
注
log-capture モジュールは必要ですか。 これは、サード パーティのロガー用の便利なアダプターです。 ただし、NLog、log4Net、または System.Diagnostics.Trace をまだ使用していない場合は、 Application Insights TrackTrace() を 直接呼び出す方法を検討してください。
注
インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 新しい機能を利用するために接続文字列に移行します。
アプリにログをインストールする
選択したログ記録フレームワークをプロジェクトにインストールします。その結果、 app.config または web.configにエントリが表示されます。
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
ログを収集するように Application Insights を構成する
まだ実行しておらず、ログ コレクターを含めるオプションがある場合は、Application Insights をプロジェクトに追加します。
または、ソリューション エクスプローラーでプロジェクトを右クリックして Application Insights を構成します。 トレース収集の構成オプションを選択します。
注
Application Insights のメニューやログ コレクターのオプションが表示されませんか。 トラブルシューティングを試してください。
手動のインストール
プロジェクトの種類が Application Insights インストーラーでサポートされていない場合は、この方法を使ってください。 たとえば、Windows デスクトップ プロジェクトの場合です。
log4net または NLog を使う場合は、プロジェクトにそれをインストールします。
ソリューション エクスプローラーでプロジェクトを右クリックし、[ NuGet パッケージの管理] を選択します。
Application Insights を検索します。
次のいずれかのパッケージを選択します。
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
- NLog: Microsoft.ApplicationInsights.NLogTarget
- log4net: Microsoft.ApplicationInsights.Log4NetAppender
- System.Diagnostics: Microsoft.ApplicationInsights.TraceListener
- Microsoft.ApplicationInsights.DiagnosticSourceListener
- Microsoft.ApplicationInsights.EtwCollector
- Microsoft.ApplicationInsights.EventSourceListener
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
NuGet パッケージでは、必要なアセンブリがインストールされ、必要に応じて web.config または app.config が変更されます。
アイロガー
コンソール アプリケーションと ASP.NET Core で Application Insights ILogger の実装を使用する例については、 .NET Core ILogger ログの ApplicationInsightsLoggerProvider を参照してください。
診断ログの呼び出しを挿入する
System.Diagnostics.Trace をお使いの場合、通常の呼び出しは次のようになります。
System.Diagnostics.Trace.TraceWarning("Slow response - database01");
log4net または NLog を使う場合は、以下を使用します。
logger.Warn("Slow response - database01");
EventSource のイベントを使用する
System.Diagnostics.Tracing.EventSource イベントをトレースとして Application Insights に送信するように構成できます。 まず、Microsoft.ApplicationInsights.EventSourceListener
NuGet パッケージをインストールします。 次に、ApplicationInsights.configファイルの TelemetryModules
セクションを編集します。
<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
<Sources>
<Add Name="MyCompany" Level="Verbose" />
</Sources>
</Add>
ソースごとに、次のパラメーターを設定できます。
- Name は、収集する EventSource の名前を指定します。
- Level は、収集するログ 記録レベルを指定します。 Critical、 Error、 Informational、 LogAlways、 Verbose、または Warning です。
- キーワード (省略可能) は、使用するキーワードの組み合わせの整数値を指定します。
DiagnosticSource のイベントを使用する
トレースとして Application Insights に送信される System.Diagnostics.DiagnosticSource イベントを構成できます。 まず、Microsoft.ApplicationInsights.DiagnosticSourceListener
NuGet パッケージをインストールします。 次に、 ApplicationInsights.config ファイルの "TelemetryModules" セクションを編集します。
<Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
<Sources>
<Add Name="MyDiagnosticSourceName" />
</Sources>
</Add>
トレースする診断ソースごとに、診断ソースの名前に設定された Name
属性を含むエントリを追加します。
ETW のイベントを使用する
Application Insights にトレースとして送信されるように Windows イベント トレーシング (ETW) のイベントを構成できます。 まず、Microsoft.ApplicationInsights.EtwCollector
NuGet パッケージをインストールします。 次に、 ApplicationInsights.config ファイルの "TelemetryModules" セクションを編集します。
注
ETW のイベントを収集できるのは、SDK をホストするプロセスが、Performance Log Users または Administrators のメンバーである ID で実行されている場合だけです。
<Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
<Sources>
<Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
</Sources>
</Add>
ソースごとに、次のパラメーターを設定できます。
- ProviderName は、収集する ETW プロバイダーの名前です。
- ProviderGuid は、収集する ETW プロバイダーの GUID を指定します。
ProviderName
の代わりに使用できます。 - レベル は、収集するログ 記録レベルを設定します。 Critical、Error、Informational、LogAlways、Verbose、または Warning にすることができます。
- キーワード (省略可能) は、使用するキーワードの組み合わせの整数値を設定します。
Trace API を直接使用する
Application Insights Trace API を直接呼び出すことができます。 ログのアダプターではこの API が使われます。
次に例を示します。
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");
TrackTrace
の利点は、比較的長いデータをメッセージの中に配置できることです。 たとえば、そこで POST データをエンコードできます。
メッセージに重大度レベルを追加することもできます。 また、他のテレメトリと同様、さまざまなトレース セットのフィルターや検索に役立つプロパティ値を追加できます。 次に例を示します。
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
SeverityLevel.Warning,
new Dictionary<string, string> { { "database", "db.ID" } });
トランザクション検索で、特定のデータベースに関連する特定の重大度レベルのすべてのメッセージを簡単に除外できるようになりました。
OpenCensus Python 用の AzureLogHandler
Azure Monitor ログ ハンドラーを使用すると、Python ログを Azure Monitor にエクスポートできます。
OpenCensus Python SDK for Azure Monitor を使用してアプリケーションをインストルメント化します。
この例では、警告レベルのログを Azure Monitor に送信する方法を示します。
import logging
from opencensus.ext.azure.log_exporter import AzureLogHandler
logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')
ログを調査する
アプリをデバッグ モードで実行するか、ライブでデプロイします。
Application Insights ポータルのアプリの概要ウィンドウで、[ トランザクション検索] を選択します。
たとえば、次の操作ができます。
- ログ トレースまたは特定のプロパティを持つ項目をフィルター処理する。
- 特定の項目を詳しく調べる。
- 同じユーザー要求に関連する (操作 ID が同じ) 他のシステム ログ データを探す。
- ページの構成をお気に入りとして保存する。
注
アプリケーションから大量のデータが送信され、Application Insights SDK for ASP.NET バージョン 2.0.0-beta3 以降を使用している場合、 アダプティブ サンプリング 機能が動作し、テレメトリの一部のみが送信される可能性があります。 サンプリングについて詳しく知る。
トラブルシューティング
よくあるご質問とそれに対する回答を示します。
テレメトリの遅延、ネットワークの過負荷、非効率的な送信の原因は何ですか?
System.Diagnostics.Tracing には 自動フラッシュ機能があります。 この機能により、SDK はすべてのテレメトリ項目をフラッシュしますが、これは望ましいことではなく、テレメトリの遅延、ネットワークの過負荷、非効率的な転送といったログ アダプターの問題が発生する可能性があります。
Java の場合はどうすればよいですか?
Java コード不要のインストルメンテーション (推奨) では、既定でログが収集されます。 Java 3.0 エージェントを使用します。
何もしなくても、Application Insights Java エージェントは Log4j、Logback、java.util.logging からログを収集します。
プロジェクトのコンテキスト メニューに Application Insights のオプションがないのはなぜですか?
- 開発用マシンに Developer Analytics Tools がインストールしてあることを確認します。 Visual Studio で、[ ツール>Extensions と更新プログラム] に移動し、 Developer Analytics Tools を探します。 [ インストール済み ] タブにない場合は、[ オンライン ] タブを開いてインストールします。
- このプロジェクトの種類は、Developer Analytics Tools でサポートされていない可能性があります。 手動インストールを使用します。
構成ツールにログ アダプターのオプションがないのはなぜですか?
- まず、ログ記録フレームワークをインストールします。
- System.Diagnostics.Trace を使用している場合は、web.configで構成していることを確認します。
- Application Insights が最新バージョンであることを確認します。 Visual Studio で、[ ツール>Extensions と更新プログラム ] に移動し、[ 更新] タブを開きます。 Developer Analytics Tools がある場合は、それを選択して更新します。
"インストルメンテーション キーは空にできません" というエラーメッセージが表示されるのはなぜですか?
Application Insights をインストールしないでログ アダプターの NuGet パッケージをインストールした可能性があります。 ソリューション エクスプローラーで、 ApplicationInsights.configを右クリックし、[ Application Insights の更新] を選択します。 Azure にサインインし、Application Insights リソースを作成するか、既存のものを再利用することを求めるメッセージが表示されます。 これで問題は解決するはずです。
診断検索にトレースは表示されますが、他のイベントが表示されないのはなぜですか?
すべてのイベントと要求がパイプラインを通過するまでしばらく時間がかかることがあります。
保持されるデータの量はどのくらいですか?
いくつかの要因が、保持されるデータの量に影響します。 詳細については、顧客イベント メトリック ページ の「制限 」セクションを参照してください。
想定していたログ エントリの一部が表示されないのはなぜですか?
アプリケーションから大量のデータを送信され、Application Insights SDK for ASP.NET バージョン 2.0.0-beta3 以降を使っている可能性があります。 この場合、アダプティブ サンプリング機能が動作し、テレメトリの一部のみが送信されることがあります。 サンプリングについて詳しく知る。
次のステップ
- サポートされているバージョンの Application Insights SDK を実行していることを確認します。
- ASP.NET でエラーと例外を診断する
- トランザクション検索の詳細
- 可用性と応答性のテストを設定する