EventSource Classe

Definizione

Crea eventi per Traccia eventi per Windows (ETW).Provides the ability to create events for event tracing for Windows (ETW).

public ref class EventSource : IDisposable
public class EventSource : IDisposable
type EventSource = class
    interface IDisposable
Public Class EventSource
Implements IDisposable
Ereditarietà
EventSource
Derivato
Implementazioni

Esempi

Nell'esempio seguente viene illustrata un'implementazione semplice EventSource della classe.The following example shows a simple implementation of the EventSource class.

using System.Diagnostics.Tracing;
using System.Collections.Generic;

namespace Demo1
{
    class MyCompanyEventSource : EventSource
    {
        public static MyCompanyEventSource Log = new MyCompanyEventSource();

        public void Startup() { WriteEvent(1); }
        public void OpenFileStart(string fileName) { WriteEvent(2, fileName); }
        public void OpenFileStop() { WriteEvent(3); }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string name = MyCompanyEventSource.GetName(typeof(MyCompanyEventSource));
            IEnumerable<EventSource> eventSources = MyCompanyEventSource.GetSources();
            MyCompanyEventSource.Log.Startup();
            // ...
            MyCompanyEventSource.Log.OpenFileStart("SomeFile");
            // ...
            MyCompanyEventSource.Log.OpenFileStop();
        }
    }
}
Imports System.Diagnostics.Tracing

Class MyCompanyEventSource
    Inherits EventSource
    Public Shared Log As New MyCompanyEventSource()

    Public Sub Startup()
        WriteEvent(1)
    End Sub

    Public Sub OpenFileStart(ByVal fileName As String)
        WriteEvent(2, fileName)
    End Sub

    Public Sub OpenFileStop()
        WriteEvent(3)
    End Sub
End Class

Class Program

    Shared Sub Main(ByVal args() As String)
        MyCompanyEventSource.Log.Startup()
        ' ...
        MyCompanyEventSource.Log.OpenFileStart("SomeFile")
        ' ...
        MyCompanyEventSource.Log.OpenFileStop()

    End Sub
End Class

Nell'esempio seguente viene illustrata un'implementazione più complessa EventSource della classe.The following example shows a more complex implementation of the EventSource class.

using System;
using System.Diagnostics.Tracing;

namespace Demo2
{
    enum MyColor { Red, Yellow, Blue };

    [EventSource(Name = "MyCompany")]
    class MyCompanyEventSource : EventSource
    {
        public class Keywords
        {
            public const EventKeywords Page = (EventKeywords)1;
            public const EventKeywords DataBase = (EventKeywords)2;
            public const EventKeywords Diagnostic = (EventKeywords)4;
            public const EventKeywords Perf = (EventKeywords)8;
        }

        public class Tasks
        {
            public const EventTask Page = (EventTask)1;
            public const EventTask DBQuery = (EventTask)2;
        }

        [Event(1, Message = "Application Failure: {0}", Level = EventLevel.Error, Keywords = Keywords.Diagnostic)]
        public void Failure(string message) { WriteEvent(1, message); }

        [Event(2, Message = "Starting up.", Keywords = Keywords.Perf, Level = EventLevel.Informational)]
        public void Startup() { WriteEvent(2); }

        [Event(3, Message = "loading page {1} activityID={0}", Opcode = EventOpcode.Start, 
            Task = Tasks.Page, Keywords = Keywords.Page, Level = EventLevel.Informational)]
        public void PageStart(int ID, string url) { if (IsEnabled()) WriteEvent(3, ID, url); }

        [Event(4, Opcode = EventOpcode.Stop, Task = Tasks.Page, Keywords = Keywords.Page, Level = EventLevel.Informational)]
        public void PageStop(int ID) { if (IsEnabled()) WriteEvent(4, ID); }

        [Event(5, Opcode = EventOpcode.Start, Task = Tasks.DBQuery, Keywords = Keywords.DataBase, Level = EventLevel.Informational)]
        public void DBQueryStart(string sqlQuery) { WriteEvent(5, sqlQuery); }

        [Event(6, Opcode = EventOpcode.Stop, Task = Tasks.DBQuery, Keywords = Keywords.DataBase, Level = EventLevel.Informational)]
        public void DBQueryStop() { WriteEvent(6); }

        [Event(7, Level = EventLevel.Verbose, Keywords = Keywords.DataBase)]
        public void Mark(int ID) { if (IsEnabled()) WriteEvent(7, ID); }

        [Event(8)]
        public void LogColor(MyColor color) { WriteEvent(8, (int) color); }

        public static MyCompanyEventSource Log = new MyCompanyEventSource();
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyCompanyEventSource.Log.Startup();
            Console.WriteLine("Starting up");

            MyCompanyEventSource.Log.DBQueryStart("Select * from MYTable");
            var url = "http://localhost";
            for (int i = 0; i < 10; i++)
            {
                MyCompanyEventSource.Log.PageStart(i, url);
                MyCompanyEventSource.Log.Mark(i);
                MyCompanyEventSource.Log.PageStop(i);
            }
            MyCompanyEventSource.Log.DBQueryStop();
            MyCompanyEventSource.Log.LogColor(MyColor.Blue);

            MyCompanyEventSource.Log.Failure("This is a failure 1");
            MyCompanyEventSource.Log.Failure("This is a failure 2");
            MyCompanyEventSource.Log.Failure("This is a failure 3");
        }
    }
}
Imports System.Diagnostics.Tracing


Enum MyColor
    Red
    Yellow
    Blue
End Enum 'MyColor 
<EventSource(Name:="MyCompany")> _
Class MyCompanyEventSource
    Inherits EventSource

    Public Class Keywords
        Public Const Page As EventKeywords = CType(1, EventKeywords)
        Public Const DataBase As EventKeywords = CType(2, EventKeywords)
        Public Const Diagnostic As EventKeywords = CType(4, EventKeywords)
        Public Const Perf As EventKeywords = CType(8, EventKeywords)
    End Class

    Public Class Tasks
        Public Const Page As EventTask = CType(1, EventTask)
        Public Const DBQuery As EventTask = CType(1, EventTask)
    End Class

    <[Event](1, Message:="Application Failure: {0}", Level:=EventLevel.Error, Keywords:=Keywords.Diagnostic)> _
    Public Sub Failure(ByVal message As String)
        WriteEvent(1, message)
    End Sub

    <[Event](2, Message:="Starting up.", Keywords:=Keywords.Perf, Level:=EventLevel.Informational)> _
    Public Sub Startup()
        WriteEvent(2)
    End Sub

    <[Event](3, Message:="loading page {1} activityID={0}", Opcode:=EventOpcode.Start, Task:=Tasks.Page, Keywords:=Keywords.Page, Level:=EventLevel.Informational)> _
    Public Sub PageStart(ByVal ID As Integer, ByVal url As String)
        If IsEnabled() Then
            WriteEvent(3, ID, url)
        End If
    End Sub

    <[Event](4, Opcode:=EventOpcode.Stop, Task:=Tasks.Page, Keywords:=Keywords.Page, Level:=EventLevel.Informational)> _
    Public Sub PageStop(ByVal ID As Integer)
        If IsEnabled() Then
            WriteEvent(4, ID)
        End If
    End Sub

    <[Event](5, Opcode:=EventOpcode.Start, Task:=Tasks.DBQuery, Keywords:=Keywords.DataBase, Level:=EventLevel.Informational)> _
    Public Sub DBQueryStart(ByVal sqlQuery As String)
        WriteEvent(5, sqlQuery)
    End Sub

    <[Event](6, Opcode:=EventOpcode.Stop, Task:=Tasks.DBQuery, Keywords:=Keywords.DataBase, Level:=EventLevel.Informational)> _
    Public Sub DBQueryStop()
        WriteEvent(6)
    End Sub

    <[Event](7, Level:=EventLevel.Verbose, Keywords:=Keywords.DataBase)> _
    Public Sub Mark(ByVal ID As Integer)
        If IsEnabled() Then
            WriteEvent(7, ID)
        End If
    End Sub

    <[Event](8)> _
    Public Sub LogColor(ByVal color As MyColor)
        WriteEvent(8, Fix(color))
    End Sub
    Public Shared Log As New MyCompanyEventSource()
End Class


Class Program

    Shared Sub Main(ByVal args() As String)
        MyCompanyEventSource.Log.Startup()
        Console.WriteLine("Starting up")
        MyCompanyEventSource.Log.DBQueryStart("Select * from MYTable")
        Dim url As String = "http:'localhost"
        Dim i As Integer
        For i = 0 To 9
            MyCompanyEventSource.Log.PageStart(i, url)
            MyCompanyEventSource.Log.Mark(i)
            MyCompanyEventSource.Log.PageStop(i)
        Next i
        MyCompanyEventSource.Log.DBQueryStop()
        MyCompanyEventSource.Log.LogColor(MyColor.Blue)

        MyCompanyEventSource.Log.Failure("This is a failure 1")
        MyCompanyEventSource.Log.Failure("This is a failure 2")
        MyCompanyEventSource.Log.Failure("This is a failure 3")
    End Sub
End Class

Commenti

Questa classe è destinata a essere ereditata da una classe utente che fornisce eventi specifici da utilizzare per ETW.This class is intended to be inherited by a user class that provides specific events to be used for ETW. I EventSource.WriteEvent metodi vengono chiamati per registrare gli eventi.The EventSource.WriteEvent methods are called to log the events.

Importante

Il tipo implementa l'interfaccia IDisposable.This type implements the IDisposable interface. Dopo aver utilizzato il tipo, è necessario eliminarlo direttamente o indirettamente.When you have finished using the type, you should dispose of it either directly or indirectly. Per eliminare direttamente il tipo, chiamare il metodo Dispose in un blocco try/catch.To dispose of the type directly, call its Dispose method in a try/catch block. Per eliminarlo indirettamente, utilizzare un costrutto di linguaggio come ad esempio using in C# o Using in Visual Basic.To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). Per altre informazioni, vedere la sezione "Uso di un oggetto che implementa IDisposable" nell'argomento relativo all'interfaccia IDisposable.For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

La funzionalità di base EventSource di è sufficiente per la maggior parte delle applicazioni.The basic functionality of EventSource is sufficient for most applications. Se si desidera un maggiore controllo sul manifesto ETW creato, è possibile applicare l' EventAttribute attributo ai metodi.If you want more control over the ETW manifest that is created, you can apply the EventAttribute attribute to the methods. Per le applicazioni di origine di eventi avanzati, è possibile intercettare i comandi inviati all'origine eventi derivata e modificare i filtri oppure per fare in modo che le azioni, ad esempio il dump di una struttura di dati, vengano eseguite dall'erede.For advanced event source applications, it is possible to intercept the commands being sent to the derived event source and change the filtering, or to cause actions (such as dumping a data structure) to be performed by the inheritor. Un'origine evento può essere attivata immediatamente con i controller ETW di Windows, ad esempio lo strumento Logman.An event source can be activated with Windows ETW controllers, such as the Logman tool, immediately. È anche possibile controllare e intercettare il dispatcher di dati a livello di codice.It is also possible to programmatically control and intercept the data dispatcher. La EventListener classe fornisce funzionalità aggiuntive.The EventListener class provides additional functionality.

A partire .NET Framework 4.6.NET Framework 4.6da EventSource , fornisce il supporto del canale e alcune delle regole di convalida dell'origine eventi sono state ammorbidite.Starting with .NET Framework 4.6.NET Framework 4.6, EventSource provides channel support and some of the event source validation rules have been relaxed. Vale a dire che:This means:

  • EventSourcei tipi possono ora implementare le interfacce.EventSource types may now implement interfaces. In questo modo è possibile utilizzare i tipi di origine evento nei sistemi di registrazione avanzati che utilizzano le interfacce per definire una destinazione di registrazione comune.This enables the use of event source types in advanced logging systems that use interfaces to define a common logging target.

  • È stato introdotto il concetto di tipo di origine di un evento di utilità.The concept of a utility event source type has been introduced. Questa funzionalità consente di condividere il codice tra più tipi di origine evento in un progetto per abilitare scenari WriteEvent come gli overload ottimizzati.This feature enables sharing code across multiple event source types in a project to enable scenarios such as optimized WriteEvent overloads.

Per una versione della classe EventSource che fornisce funzionalità come il supporto del canale di .NET Framework 4.5.1.NET Framework 4.5.1 destinazione o precedente, vedere la pagina relativa alla libreria Microsoft EventSource 1.0.16.For a version of the EventSource class that provides features such as channel support you are targeting .NET Framework 4.5.1.NET Framework 4.5.1 or earlier, see Microsoft EventSource Library 1.0.16.

Costruttori

EventSource()

Crea una nuova istanza della classe EventSource.Creates a new instance of the EventSource class.

EventSource(Boolean)

Crea una nuova istanza della classe EventSource e specifica se generare un'eccezione quando si verifica un errore nel codice sottostante di Windows.Creates a new instance of the EventSource class and specifies whether to throw an exception when an error occurs in the underlying Windows code.

EventSource(EventSourceSettings)

Crea una nuova istanza della classe EventSource con le impostazioni di configurazione specificate.Creates a new instance of the EventSource class with the specified configuration settings.

EventSource(EventSourceSettings, String[])

Inizializza una nuova istanza dell'oggetto EventSource da usare con eventi non di contratto che contengono le impostazioni e i tratti specificati.Initializes a new instance of the EventSource to be used with non-contract events that contains the specified settings and traits.

EventSource(String)

Crea una nuova istanza della classe EventSource con il nome specificato.Creates a new instance of the EventSource class with the specified name.

EventSource(String, EventSourceSettings)

Crea una nuova istanza della classe EventSource con il nome e le impostazioni specificate.Creates a new instance of the EventSource class with the specified name and settings.

EventSource(String, EventSourceSettings, String[])

Crea una nuova istanza della classe EventSource con le impostazioni di configurazione specificate.Creates a new instance of the EventSource class with the specified configuration settings.

Proprietà

ConstructionException

Ottiene un'eccezione generata durante la costruzione dell'origine evento.Gets any exception that was thrown during the construction of the event source.

CurrentThreadActivityId

Ottiene l'ID attività del thread corrente.Gets the activity ID of the current thread.

Guid

Identificatore univoco per l'origine evento.The unique identifier for the event source.

Name

Il nome descrittivo della classe che deriva dall'origine evento.The friendly name of the class that is derived from the event source.

Settings

Ottiene le impostazioni applicate a questa origine evento.Gets the settings applied to this event source.

Metodi

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe EventSource.Releases all resources used by the current instance of the EventSource class.

Dispose(Boolean)

Rilascia le risorse non gestite usate dalla classe EventSource e facoltativamente le risorse gestite.Releases the unmanaged resources used by the EventSource class and optionally releases the managed resources.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
Finalize()

Consente all' oggetto EventSource di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto venga recuperato da Garbage Collection.Allows the EventSource object to attempt to free resources and perform other cleanup operations before the object is reclaimed by garbage collection.

GenerateManifest(Type, String)

Restituisce una stringa del manifesto XML associato all'origine evento corrente.Returns a string of the XML manifest that is associated with the current event source.

GenerateManifest(Type, String, EventManifestOptions)

Restituisce una stringa del manifesto XML associato all'origine evento corrente.Returns a string of the XML manifest that is associated with the current event source.

GetGuid(Type)

Ottiene l'identificatore univoco per questa implementazione dell'origine evento.Gets the unique identifier for this implementation of the event source.

GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetName(Type)

Ottiene il nome descrittivo dell'origine evento.Gets the friendly name of the event source.

GetSources()

Ottiene lo snapshot di tutte le origini evento per il dominio applicazione.Gets a snapshot of all the event sources for the application domain.

GetTrait(String)

Ottiene il valore del tratto associato alla chiave specificata.Gets the trait value associated with the specified key.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
IsEnabled()

Determina se l'origine evento corrente è abilitata.Determines whether the current event source is enabled.

IsEnabled(EventLevel, EventKeywords)

Determina se l'origine evento corrente con il livello e la parola chiave specificati è abilitata.Determines whether the current event source that has the specified level and keyword is enabled.

IsEnabled(EventLevel, EventKeywords, EventChannel)

Determina se l'origine evento è abilitata per eventi con il livello, le parole chiave e il canale specificati.Determines whether the current event source is enabled for events with the specified level, keywords and channel.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnEventCommand(EventCommandEventArgs)

Chiamato quando l'origine evento corrente viene aggiornata dal controller.Called when the current event source is updated by the controller.

SendCommand(EventSource, EventCommand, IDictionary<String,String>)

Invia un comando a un'origine evento specificata.Sends a command to a specified event source.

SetCurrentThreadActivityId(Guid)

Imposta l'ID attività nel thread corrente.Sets the activity ID on the current thread.

SetCurrentThreadActivityId(Guid, Guid)

Imposta l'ID attività nel thread corrente e restituisce l'ID attività precedente.Sets the activity ID on the current thread, and returns the previous activity ID.

ToString()

Ottiene una rappresentazione di stringa dell'istanza dell'origine evento corrente.Obtains a string representation of the current event source instance.

Write(String)

Scrive un evento senza campi, ma con il nome e le opzioni predefinite specificate.Writes an event without fields, but with the specified name and default options.

Write(String, EventSourceOptions)

Scrive un evento senza campi, ma con il nome e le opzioni specificate.Writes an event without fields, but with the specified name and options.

Write<T>(String, EventSourceOptions, Guid, Guid, T)

Scrive un evento con il nome, le opzioni, le attività correlate e i dati specificati.Writes an event with the specified name, options, related activity and event data.

Write<T>(String, EventSourceOptions, T)

Scrive un evento con il nome, i dati e le opzioni specificate.Writes an event with the specified name, event data and options.

Write<T>(String, EventSourceOptions, T)

Scrive un evento con il nome, le opzioni e i dati specificati.Writes an event with the specified name, options and event data.

Write<T>(String, T)

Scrive un evento con il nome e i dati specificati.Writes an event with the specified name and data.

WriteEvent(Int32)

Scrive un evento usando l'identificatore evento fornito.Writes an event by using the provided event identifier.

WriteEvent(Int32, Byte[])

Scrive un evento usando l'identificatore evento fornito e gli argomenti di matrice di byte.Writes an event by using the provided event identifier and byte array argument.

WriteEvent(Int32, Int32)

Scrive un evento usando l'identificatore evento fornito e un argomento di intero a 32 bit.Writes an event by using the provided event identifier and 32-bit integer argument.

WriteEvent(Int32, Int32, Int32)

Scrive un evento usando l'identificatore evento fornito e gli argomenti interi a 32 bit.Writes an event by using the provided event identifier and 32-bit integer arguments.

WriteEvent(Int32, Int32, Int32, Int32)

Scrive un evento usando l'identificatore evento fornito e gli argomenti interi a 32 bit.Writes an event by using the provided event identifier and 32-bit integer arguments.

WriteEvent(Int32, Int32, String)

Scrive un evento usando l'identificatore evento fornito e gli argomenti di stringa e interi a 32 bit.Writes an event by using the provided event identifier and 32-bit integer and string arguments.

WriteEvent(Int32, Int64)

Scrive un evento usando l'identificatore evento fornito e un argomento di intero a 64 bit.Writes an event by using the provided event identifier and 64-bit integer argument.

WriteEvent(Int32, Int64, Byte[])

Scrive i dati dell'evento usando l'identificatore e gli argomenti di matrice di byte e di interi a 64 bit specificati.Writes the event data using the specified identifier and 64-bit integer and byte array arguments.

WriteEvent(Int32, Int64, Int64)

Scrive un evento usando l'identificatore evento fornito e gli argomenti a 64 bit.Writes an event by using the provided event identifier and 64-bit arguments.

WriteEvent(Int32, Int64, Int64, Int64)

Scrive un evento usando l'identificatore evento fornito e gli argomenti a 64 bit.Writes an event by using the provided event identifier and 64-bit arguments.

WriteEvent(Int32, Int64, String)

Scrive un evento usando l'identificatore evento fornito e gli argomenti di stringa e interi a 64 bit.Writes an event by using the provided event identifier and 64-bit integer, and string arguments.

WriteEvent(Int32, Object[])

Scrive un evento usando l'identificatore evento fornito e gli array di argomenti.Writes an event by using the provided event identifier and array of arguments.

WriteEvent(Int32, String)

Scrive un evento usando l'identificatore evento fornito e gli argomenti di stringa.Writes an event by using the provided event identifier and string argument.

WriteEvent(Int32, String, Int32)

Scrive un evento usando l'identificatore evento fornito e gli argomenti.Writes an event by using the provided event identifier and arguments.

WriteEvent(Int32, String, Int32, Int32)

Scrive un evento usando l'identificatore evento fornito e gli argomenti.Writes an event by using the provided event identifier and arguments.

WriteEvent(Int32, String, Int64)

Scrive un evento usando l'identificatore evento fornito e gli argomenti.Writes an event by using the provided event identifier and arguments.

WriteEvent(Int32, String, String)

Scrive un evento usando l'identificatore evento fornito e gli argomenti di stringa.Writes an event by using the provided event identifier and string arguments.

WriteEvent(Int32, String, String, String)

Scrive un evento usando l'identificatore evento fornito e gli argomenti di stringa.Writes an event by using the provided event identifier and string arguments.

WriteEventCore(Int32, Int32, EventSource+EventData*)

Crea un nuovo overload di WriteEvent tramite l'identificatore evento e i dati dell'evento forniti.Creates a new WriteEvent overload by using the provided event identifier and event data.

WriteEventWithRelatedActivityId(Int32, Guid, Object[])

Scrive un evento che indica che l'attività corrente è correlata a un'altra attività.Writes an event that indicates that the current activity is related to another activity.

WriteEventWithRelatedActivityIdCore(Int32, Guid*, Int32, EventSource+EventData*)

Scrive un evento che indica che l'attività corrente è correlata a un'altra attività.Writes an event that indicates that the current activity is related to another activity.

Eventi

EventCommandExecuted

Si verifica quando un comando proviene da un listener di eventi.Occurs when a command comes from an event listener.

Si applica a

Thread safety

Questo tipo è thread-safe.This type is thread safe.