LoggingEventSource Třída

Definice

Přemístí veškeré protokolování založené na ILoggeru na protokolování EventSource/EventListener.

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
Dědičnost
LoggingEventSource
Atributy

Příklady

Tento příklad ukazuje, jak pomocí eventListener získat ILogging informace.

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

Poznámky

Pokud chcete toto protokolování zapnout, povolíte EventSource s názvem Microsoft-Extensions-Logging. Když povolíte EventSource, vlastnost EventLevel, kterou nastavíte, se přeloží na úroveň přidruženou k ILoggeru (tedy Debugverbose = , ). Critical == CriticalInformational = Informational Díky tomu můžete filtrovat podle úrovně událostí jednoduchým způsobem.

Pro jemné řízení můžete zadat argument EventSource s názvem FilterSpecs. Argument FilterSpecs je seznam specifikací oddělený středníkem. Kde jsou jednotlivé specifikace:

SPEC = // Prázdná specifikace, stejná jako *.

| NAME // Pojmenovaná specifikace. Používá výchozí úroveň.

| NAME: LEVEL // Určuje úroveň pro konkrétní protokolovací nástroj (může mít * příponu).

Pokud je v parametru FilterSpecs"UseAppFilters" zadáno , zabrání zakázání všech kategorií, což se ve výchozím nastavení stane jinak.

Name je název ILogger (záleží na případu) a může končit znakem *, který funguje jako zástupný znak. Bude například Net* odpovídat všem protokolovacím souborům, které začínají na net.

LEVEL je číslo nebo LogLevel řetězec (0=Trace, 1=Debug, 2=Information, 3=Warning, 4=Error, Critical=5). Určuje úroveň přidruženého vzoru. Pokud není zadané číslo (první forma specifikace), je to výchozí úroveň pro EventSource.

První shoda se použije, pokud určitý název odpovídá více než jednomu vzoru.

Kromě úrovně a FilterSpecs argumentu můžete také nastavit klíčová slova EventSource:

* Keywords.Message – Událost obsahuje data v parsované podobě.

* Keywords.JsonMessage – Událost obsahuje data v parsované podobě, ale jako objekt blob JSON (není rozdělený podle argumentu).

* Keywords.FormattedMessage – Událost obsahuje data formátovaná jako řetězec.

Očekává se, že najednou je zapnutá jenom jedna z těchto klíčových slov, ale můžete je zapnout (a získat stejná data zaprotokolovaná třemi různými způsoby).

Platí pro