LoggingEventSource Klass

Definition

Brygger all ILogger-baserad loggning till EventSource/EventListener-loggning.

public ref class LoggingEventSource sealed : System::Diagnostics::Tracing::EventSource
[System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")]
public sealed class LoggingEventSource : System.Diagnostics.Tracing.EventSource
[<System.Diagnostics.Tracing.EventSource(Name="Microsoft-Extensions-Logging")>]
type LoggingEventSource = class
    inherit EventSource
Public NotInheritable Class LoggingEventSource
Inherits EventSource
Arv
LoggingEventSource
Attribut

Exempel

Det här exemplet visar hur du använder en EventListener för att hämta information om ILogging.

class MyEventListener : EventListener {
    protected override void OnEventSourceCreated(EventSource eventSource) {
        if (eventSource.Name == "Microsoft-Extensions-Logging") {
            // Initialize a dictionary of arguments to pass to the EventSource.
            // Turn on loggers matching App* to Information; everything else (*) is the default level (which is EventLevel.Error).
            var args = new Dictionary<string, string>() { { "FilterSpecs", "App*:Information;*" } };
            // Set the default level (verbosity) to Error, and only ask for the formatted messages in this case.
            EnableEvents(eventSource, EventLevel.Error, LoggingEventSource.Keywords.FormattedMessage, args);
        }
    }
    protected override void OnEventWritten(EventWrittenEventArgs eventData) {
        // Look for the formatted message event, which has the following argument layout (as defined in the LoggingEventSource):
        // FormattedMessage(LogLevel Level, int FactoryID, string LoggerName, string EventId, string FormattedMessage);
        if (eventData.EventName == "FormattedMessage")
            Console.WriteLine($"Logger {eventData.Payload[2]}: {eventData.Payload[4]}");
    }
}

Kommentarer

Om du vill aktivera den här loggningen aktiverar du EventSource med namnet Microsoft-Extensions-Logging. När du aktiverar EventSource översätts den EventLevel som du anger till den nivå som är associerad med ILogger (alltså Debug = verbose, Informational = Informational, ). Critical == Critical På så sätt kan du filtrera efter händelsenivå på ett enkelt sätt.

För finare kontroll kan du ange ett EventSource-argument med namnet FilterSpecs. Argumentet FilterSpecs är en semikolonavgränsad lista med specifikationer. Var varje specifikation är:

SPEC = // Tom specifikation, samma som *.

| NAMN // Namngiven specifikation. Använder standardnivån.

| NAMN: NIVÅ // Anger nivå för en viss logger (kan ha ett * suffix).

När "UseAppFilters" anges i FilterSpecs, undviker den att inaktivera alla kategorier, vilket annars sker som standard.

Name är namnet på ett ILogger (ärende spelar roll) och kan sluta med *, som fungerar som ett jokertecken. Till exempel Net* matchar alla loggare som börjar med "Net".

LEVEL är ett tal eller en LogLevel sträng (0=Trace, 1=Debug, 2=Information, 3=Warning, 4=Error, Critical=5). Detta anger nivån för det associerade mönstret. Om talet inte har angetts (den första formen av specifikationen) är det standardnivån för EventSource.

Den första matchningen används om ett visst namn matchar mer än ett mönster.

Förutom nivån och FilterSpecs argumentet kan du även ange Nyckelord för EventSource:

* Keywords.Message – Händelsen innehåller data i tolkat formulär.

* Keywords.JsonMessage – Händelsen innehåller data i tolkad form men som en JSON-blob (inte uppdelad efter argument).

* Keywords.FormattedMessage – Händelsen innehåller data som är formaterade som en sträng.

Det förväntas att endast ett av dessa nyckelord är aktiverat i taget, men du kan aktivera dem alla (och få samma data loggade på tre olika sätt).

Gäller för