LoggingEventSource Classe

Definição

Conecta todo o log baseado em ILogger ao registro em log 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
Herança
LoggingEventSource
Atributos

Exemplos

Este exemplo mostra como usar um EventListener para obter informações de 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]}");
    }
}

Comentários

Para ativar esse logon, habilite o EventSource chamado Microsoft-Extensions-Logging. Quando você habilita o EventSource, o EventLevel definido é convertido no nível associado ao ILogger (portantoDebug = verbose, ,Informational = Informational , ). Critical == Critical Isso permite filtrar por nível de evento de maneira simples.

Para um controle mais fino, você pode especificar um argumento EventSource chamado FilterSpecs. O FilterSpecs argumento é uma lista separada por ponto-e-vírgula de especificações. Onde está cada especificação:

SPEC = // Especificação vazia, igual a *.

| NOME // Especificação nomeada. Usa o nível padrão.

| NAME: LEVEL // Especifica o nível de um agente específico (pode ter um sufixo * ).

Quando "UseAppFilters" é especificado no FilterSpecs, ele evita desabilitar todas as categorias, o que acontece por padrão, caso contrário.

Name é o nome de um ILogger (caso importa) e pode terminar com *, que atua como um curinga. Por exemplo, Net* corresponderá a todos os agentes que começam com 'Net'.

LEVEL é um número ou uma LogLevel cadeia de caracteres (0=Trace, 1=Debug, 2=Information, 3=Warning, 4=Error, Critical=5). Isso especifica o nível do padrão associado. Se o número não for especificado (primeira forma da especificação), ele será o nível padrão do EventSource.

A primeira correspondência será usada se um nome específico corresponder a mais de um padrão.

Além do nível e FilterSpecs do argumento, você também pode definir palavras-chave EventSource:

* Keywords.Message - O evento contém dados no formulário analisado.

* Keywords.JsonMessage - O evento contém dados em forma analisada, mas como um blob JSON (não dividido por argumento).

* Keywords.FormattedMessage – o evento contém dados formatados como uma cadeia de caracteres.

Espera-se que apenas uma dessas palavras-chave esteja ativada por vez, mas você pode ativá-las todas (e obter os mesmos dados registrados de três maneiras diferentes).

Aplica-se a