次の方法で共有


トレース ログ管理クイック スタート

次のセクションでは、トレース ログを .NET コードに追加するために必要な基本的な手順について説明します。

前提条件

  • .NET 4.6 以降。

SimpleTraceLoggingExample.cs

この例では、個別のインストルメンテーション マニフェスト XML ファイルを手動で作成することなく、TraceLogging イベントをログに記録する方法を示します。

using System;
using System.Diagnostics.Tracing;

namespace SimpleTraceLoggingExample
{
    class Program
    {
        private static EventSource log = new EventSource("SimpleTraceLoggingProvider");
        static void Main(string[] args)
        {
            log.Write("Event 1"); // write an event with no fields
            log.Write("Event 2", new { someEventData = DateTime.Now }); // Sending an anonymous type as event data

            ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now };
            log.Write("Event 3", EventData); // Sending a class decorated with [EventData] as event data
        }
    }

    [EventData] // [EventData] makes it possible to pass an instance of the class as an argument to EventSource.Write()
    public sealed class ExampleStructuredData
    {
        public int TransactionID { get; set; }
        public DateTime TransactionDate { get; set; }
    }
}

EventSource を作成する

イベントをログに記録する前に、EventSource クラスのインスタンスを作成する必要があります。 最初のコンストラクター パラメーターは、このプロバイダーの名前を識別します。 この例に示すように、プロバイダーは自動的に登録されます。

private static EventSource log = new EventSource("SimpleTraceLoggingProvider");

インスタンスは静的です。アプリケーションには特定のプロバイダーのインスタンスが一度に 1 つだけ存在する必要があるためです。

ログ トレース ログ イベント

プロバイダーが作成された後、上記の例の次のコードは単純なイベントをログに記録します。

log.Write("Event 1"); // write an event with no fields

構造化イベント ペイロード データをログに記録する

イベントでログに記録される構造化ペイロード データを定義できます。 次の例に示すように、 属性で注釈が付けられた [EventData] クラスのインスタンスとして、または匿名型として構造化ペイロード データを指定します。

log.Write("Event 2", new { someEventData = DateTime.Now }); // Sending an anonymous type as event data

ExampleStructuredData EventData = new ExampleStructuredData() { TransactionID = 1234, TransactionDate = DateTime.Now };
log.Write("Event 3", EventData); // Sending a class decorated with [EventData] as event data

次に示すように、定義した [EventData] イベント ペイロード クラスに 属性を追加する必要があります。

[EventData] // [EventData] makes it possible to pass an instance of the class as an argument to EventSource.Write()
public sealed class ExampleStructuredData
{
    public int TransactionID { get; set; }
    public DateTime TransactionDate { get; set; }
}

属性は、イベント データを記述するためにマニフェスト ファイルを手動で作成する必要性に代わるものになります。 これで、 クラスのインスタンスを EventSource.Write() メソッドに渡して、イベントと対応するペイロード データをログに記録するだけで済みます。

まとめと次のステップ

最新の内部バージョンの Windows パフォーマンス ツール (WPT) を使用してトレース ログ データをキャプチャおよび表示する方法については、「トレース ログ イベントの記録と表示 」を参照してください。

詳細な管理 されたトレース ログの例については、「.NET TraceLogging の例」を参照してください。