共用方式為


TraceLogging 受控快速入門

下一節說明將 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");

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

記錄 TraceLogging 事件

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

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 效能工具的最新內部版本擷取和檢視 TraceLogging 資料的詳細資訊,請參閱 記錄和顯示 TraceLogging 事件

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