Application Insights で .NET/.NET Core および Python のトレース ログを調べるExplore .NET/.NET Core and Python trace logs in Application Insights

ASP.NET または ASP.NET Core アプリケーションの診断トレース ログを ILogger、NLog、log4Net、または System.Diagnostics.Trace から Azure Application Insights に送信します。Send diagnostic tracing logs for your ASP.NET/ASP.NET Core application from ILogger, NLog, log4Net, or System.Diagnostics.Trace to Azure Application Insights. Python アプリケーションの場合は、Azure Monitor 用の OpenCensus Python の AzureLogHandler を使用して、診断トレース ログを送信します。For Python applications, send diagnostic tracing logs using AzureLogHandler in OpenCensus Python for Azure Monitor. その後、探索して検索できます。You can then explore and search them. これらのログはアプリケーションからの他のログ ファイルと結合されます。したがって、各ユーザー要求に関連付けられているトレースを特定し、それらを他のイベントや例外レポートに関連付けることができます。Those logs are merged with the other log files from your application, so you can identify traces that are associated with each user request and correlate them with other events and exception reports.

注意

ログ キャプチャ モジュールは必要ですか。Do you need the log-capture module? これは、サード パーティ製のロガーの場合に便利なアダプターです。It's a useful adapter for third-party loggers. しかし、NLog、log4Net、または System.Diagnostics.Trace をまだ使用していない場合は、単に Application Insights TrackTrace() を直接呼び出すことを検討してください。But if you aren't already using NLog, log4Net, or System.Diagnostics.Trace, consider just calling Application Insights TrackTrace() directly.

アプリにログ記録フレームワークをインストールするInstall logging on your app

プロジェクトで選択したログ記録フレームワークをインストールします。これにより、app.config または web.config にエントリが追加されます。Install your chosen logging framework in your project, which should result in an entry in app.config or 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 を構成するConfigure Application Insights to collect logs

Application Insights をプロジェクトに追加します (まだ追加していない場合)。Add Application Insights to your project if you haven't done that yet. Log Collector を含めるオプションが表示されます。You'll see an option to include the log collector.

または、ソリューション エクスプローラーでプロジェクトを右クリックし、Application Insights を構成します。Or right-click your project in Solution Explorer to Configure Application Insights. [トレース コレクションの構成] オプションを選択します。Select the Configure trace collection option.

注意

Application Insights のメニューやログ コレクターのオプションが表示されない場合は、No Application Insights menu or log collector option? トラブルシューティングをお試しください。Try Troubleshooting.

手動のインストールManual installation

Application Insights インストーラーでサポートされていない種類のプロジェクト (Windows デスクトップ プロジェクトなど) の場合は、手動でインストールします。Use this method if your project type isn't supported by the Application Insights installer (for example a Windows desktop project).

  1. log4Net または NLog を使用する場合は、プロジェクト内にインストールします。If you plan to use log4Net or NLog, install it in your project.

  2. ソリューション エクスプローラーで、プロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。In Solution Explorer, right-click your project, and select Manage NuGet Packages.

  3. "Application Insights" を検索します。Search for "Application Insights."

  4. 次のいずれかのパッケージを選択します。Select one of the following packages:

NuGet パッケージでは、必要なアセンブリがインストールされ、必要に応じて web.config または app.config が変更されます。The NuGet package installs the necessary assemblies and modifies web.config or app.config if that's applicable.

ILoggerILogger

コンソール アプリケーションと ASP.NET Core で Application Insights ILogger の実装を使用する例については、「ApplicationInsightsLoggerProvider for .NET Core の ILogger ログ」を参照してください。For examples of using the Application Insights ILogger implementation with console applications and ASP.NET Core, see ApplicationInsightsLoggerProvider for .NET Core ILogger logs.

診断ログの呼び出しを挿入するInsert diagnostic log calls

System.Diagnostics.Trace を使用する場合、通常の呼び出しは次のようになります。If you use System.Diagnostics.Trace, a typical call would be:

System.Diagnostics.Trace.TraceWarning("Slow response - database01");

log4net または NLog を使う場合は、以下を使用します。If you prefer log4net or NLog, use:

logger.Warn("Slow response - database01");

EventSource イベントを使用するUse EventSource events

Application Insights にトレースとして送信する System.Diagnostics.Tracing.EventSource イベントを構成できます。You can configure System.Diagnostics.Tracing.EventSource events to be sent to Application Insights as traces. まず、Microsoft.ApplicationInsights.EventSourceListener NuGet パッケージをインストールします。First, install the Microsoft.ApplicationInsights.EventSourceListener NuGet package. 次に、ApplicationInsights.config ファイルの TelemetryModules セクションを編集します。Then edit the TelemetryModules section of the ApplicationInsights.config file.

    <Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
      <Sources>
        <Add Name="MyCompany" Level="Verbose" />
      </Sources>
    </Add>

ソースごとに、次のパラメーターを設定できます。For each source, you can set the following parameters:

  • Name では、収集する EventSource の名前を指定します。Name specifies the name of the EventSource to collect.
  • Level では、収集するログ レベルを指定します。CriticalErrorInformationalLogAlwaysVerboseWarning があります。Level specifies the logging level to collect: Critical, Error, Informational, LogAlways, Verbose, or Warning.
  • Keywords (省略可能) では、使用するキーワードの組み合わせの整数値を指定します。Keywords (optional) specify the integer value of keyword combinations to use.

DiagnosticSource イベントを使用するUse DiagnosticSource events

Application Insights にトレースとして送信する System.Diagnostics.DiagnosticSource イベントを構成できます。You can configure System.Diagnostics.DiagnosticSource events to be sent to Application Insights as traces. まず、Microsoft.ApplicationInsights.DiagnosticSourceListener NuGet パッケージをインストールします。First, install the Microsoft.ApplicationInsights.DiagnosticSourceListener NuGet package. 次に、ApplicationInsights.config ファイルの "TelemetryModules" セクションを編集します。Then edit the "TelemetryModules" section of the ApplicationInsights.config file.

    <Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
      <Sources>
        <Add Name="MyDiagnosticSourceName" />
      </Sources>
    </Add>

トレースする DiagnosticSource ごとに、DiagnosticSource の名前に設定された Name 属性を持つエントリを追加します。For each DiagnosticSource you want to trace, add an entry with the Name attribute set to the name of your DiagnosticSource.

ETW イベントを使用するUse ETW events

Application Insights にトレースとして送信される Event Tracing for Windows (ETW) イベントを構成できます。You can configure Event Tracing for Windows (ETW) events to be sent to Application Insights as traces. まず、Microsoft.ApplicationInsights.EtwCollector NuGet パッケージをインストールします。First, install the Microsoft.ApplicationInsights.EtwCollector NuGet package. 次に、ApplicationInsights.config ファイルの "TelemetryModules" セクションを編集します。Then edit the "TelemetryModules" section of the ApplicationInsights.config file.

注意

ETW イベントを収集できるのは、SDK をホストするプロセスが、Performance Log Users または Administrators のメンバーである ID で実行されている場合だけです。ETW events can only be collected if the process that hosts the SDK runs under an identity that's a member of Performance Log Users or Administrators.

    <Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
      <Sources>
        <Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
      </Sources>
    </Add>

ソースごとに、次のパラメーターを設定できます。For each source, you can set the following parameters:

  • ProviderName は、収集する ETW プロバイダーの名前です。ProviderName is the name of the ETW provider to collect.
  • ProviderGuid では、収集する ETW プロバイダーの GUID を指定します。ProviderGuid specifies the GUID of the ETW provider to collect. ProviderName の代わりに使用できます。It can be used instead of ProviderName.
  • Level では、収集するログ レベルを設定します。Level sets the logging level to collect. CriticalErrorInformationalLogAlwaysVerbose、または Warning にすることができます。It can be Critical, Error, Informational, LogAlways, Verbose, or Warning.
  • Keywords (省略可能) では、使用するキーワードの組み合わせの整数値を設定します。Keywords (optional) set the integer value of keyword combinations to use.

トレース API を直接使用するUse the Trace API directly

Application Insights トレース API を直接呼び出すことができます。You can call the Application Insights trace API directly. ログ記録のアダプターはこの API を使用します。The logging adapters use this API.

次に例を示します。For example:

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow response - database01");

TrackTrace の利点は、比較的長いデータをメッセージの中に配置できることです。An advantage of TrackTrace is that you can put relatively long data in the message. たとえば、メッセージ中で POST データをエンコードできます。For example, you can encode POST data there.

メッセージに重大度レベルを追加することもできます。You can also add a severity level to your message. また、他のテレメトリと同様、プロパティ値を追加することで、さまざまなトレース セットをフィルター処理したり、検索したりすることができます。And, like other telemetry, you can add property values to help filter or search for different sets of traces. 次に例を示します。For example:

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow database response",
               SeverityLevel.Warning,
               new Dictionary<string,string> { {"database", db.ID} });

これにより、特定のデータベースに関連する、特定の重大度レベルのメッセージすべてを、[検索] で簡単に抽出できます。This would enable you to easily filter out in Search all the messages of a particular severity level that relate to a particular database.

OpenCensus Python の AzureLogHandlerAzureLogHandler for OpenCensus Python

Azure Monitor ログ ハンドラーを使用すると、Python ログを Azure Monitor にエクスポートできます。The Azure Monitor Log Handler allows you to export Python logs to Azure Monitor.

Azure Monitor 用の OpenCensus Python SDK を使用してアプリケーションをインストルメント化します。Instrument your application with the OpenCensus Python SDK for Azure Monitor.

この例では、警告レベルのログを Azure Monitor に送信する方法を示します。This example shows how to send a warning level log to 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!')

ログを調査するExplore your logs

アプリをデバッグ モードで実行するか、ライブでデプロイします。Run your app in debug mode or deploy it live.

Application Insights ポータルにあるアプリの概要ウィンドウで、[検索] を選択します。In your app's overview pane in the Application Insights portal, select Search.

たとえば、次の操作ができます。You can, for example:

  • ログ トレースまたは特定のプロパティを持つ項目をフィルター処理する。Filter on log traces or on items with specific properties.
  • 特定の項目の詳細に調べるInspect a specific item in detail.
  • 同じユーザー要求に関連する (つまり、OperationId が同じ) 他のシステム ログ データを探す。Find other system log data that relates to the same user request (has the same OperationId).
  • ページの構成をお気に入りとして保存する。Save the configuration of a page as a favorite.

注意

アプリケーションで大量のデータが送信され、Application Insights SDK for ASP.NET バージョン 2.0.0-beta3 以降を使用している場合は、"アダプティブ サンプリング" 機能が動作して、テレメトリの一部のみが送信される可能性があります。If your application sends a lot of data and you're using the Application Insights SDK for ASP.NET version 2.0.0-beta3 or later, the adaptive sampling feature may operate and send only a portion of your telemetry. サンプリングの詳細については、こちらを参照してください。Learn more about sampling.

トラブルシューティングTroubleshooting

Java の場合はどうすればよいですか。How do I do this for Java?

Java ログ アダプターを使用します。Use the Java log adapters.

プロジェクトのコンテキスト メニューに Application Insights のオプションがありませんThere's no Application Insights option on the project context menu

  • 開発用マシンに Developer Analytics Tools がインストールしてあることを確認します。Make sure that Developer Analytics Tools is installed on the development machine. Visual Studio の [ツール] > [拡張機能と更新プログラム] で、Developer Analytics Tools を探します。At Visual Studio Tools > Extensions and Updates, look for Developer Analytics Tools. [インストール済み] タブにない場合は、 [オンライン] タブを開いてインストールします。If it isn't on the Installed tab, open the Online tab and install it.
  • これは、Developer Analytics Tools でサポートされていない種類のプロジェクトの可能性があります。This might be a project type that Devloper Analytics Tools doesn't support. 手動でインストールしてください。Use manual installation.

構成ツールにログ アダプターのオプションがありませんThere's no log adapter option in the configuration tool

  • まず、ログ記録フレームワークをインストールします。Install the logging framework first.
  • System.Diagnostics.Trace を使用している場合は、web.config で構成済みであることを確認します。If you're using System.Diagnostics.Trace, make sure that you have it configured in web.config.
  • 最新バージョンの Application Insights があることを確認します。Make sure that you have the latest version of Application Insights. Visual Studio で、 [ツール] > [拡張機能と更新プログラム] の順に移動し、 [更新] タブを開きます。そこに Developer Analytics Tools がある場合は、それを選択して更新します。In Visual Studio, go to Tools > Extensions and Updates, and open the Updates tab. If Developer Analytics Tools is there, select it to update it.

"インストルメンテーション キーは空にできません" というエラーメッセージが表示されましたI get the "Instrumentation key cannot be empty" error message

Application Insights をインストールしないでログ アダプターの Nuget パッケージをインストールした可能性があります。You probably installed the logging adapter Nuget package without installing Application Insights. ソリューション エクスプローラーで、ApplicationInsights.config を右クリックし、 [Application Insights の更新] を選択します。In Solution Explorer, right-click ApplicationInsights.config, and select Update Application Insights. Azure にサインインし、Application Insights リソースを作成するか、既存のものを再利用することを求めるメッセージが表示されます。You'll be prompted to sign in to Azure and create an Application Insights resource or reuse an existing one. これで問題は修正されます。That should fix the problem.

すべてのイベントと要求がパイプラインを通過するまでしばらく時間がかかることがあります。It can take a while for all the events and requests to get through the pipeline.

保持されるデータの量はどのくらいですかHow much data is retained?

いくつかの要因が、保持されるデータの量に影響します。Several factors affect the amount of data that's retained. 詳細については、顧客イベント メトリック ページの「制限」セクションを参照してください。For more information, see the limits section of the customer event metrics page.

予期していたいくつかのログ エントリが表示されませんI don't see some log entries that I expected

アプリケーションで膨大な量のデータが送信され、Application Insights SDK for ASP.NET バージョン 2.0.0-beta3 以降を使用している場合は、アダプティブ サンプリング機能が動作して、テレメトリの一部のみが送信される可能性があります。If your application sends voluminous amounts of data and you're using the Application Insights SDK for ASP.NET version 2.0.0-beta3 or later, the adaptive sampling feature may operate and send only a portion of your telemetry. サンプリングの詳細については、こちらを参照してください。Learn more about sampling.

次のステップNext steps