共用方式為


TraceLogging Managed 快速入門

下一節說明將 TraceLogging 新增至 .NET 程式碼所需的基本步驟。

必要條件

  • .NET 4.6 或更新版本。

SimpleTraceLoggingExample.cs

此範例示範如何記錄 TraceLogging 事件,而不需要手動建立個別檢測資訊清單 XML 檔案。

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");

實例是靜態的,因為應用程式中一次只能有一個特定提供者的實例。

記錄追蹤記錄事件

建立提供者之後,上述範例中的下列程式碼會記錄簡單的事件。

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) 擷取和檢視 TraceLogging 資料的詳細資訊,請參閱 記錄和顯示 TraceLogging 事件

如需更多 Managed TraceLogging 範例,請參閱 .NET TraceLogging 範例。