Partilhar via


Microsoft.Extensions.Logging.EventSource Namespace

Contém classes e abstrações para configurar o agente de origem do evento.

Classes

EventSourceLoggerProvider

O provedor do Microsoft.Extensions.Logging.EventSource.EventSourceLogger.

LoggingEventSource

O LoggingEventSource é a ponte de todos os logs baseados em ILogger para o log EventSource/EventListener.

Você ativa esse log habilitando o EventSource chamado

 Microsoft-Extensions-Logging

Quando você habilitou o EventSource, o EventLevel definido é traduzido da maneira óbvia para o nível associado ao ILogger (portanto, Depurar = detalhado, Informativo = Informativo ... Crítico == Crítico)

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 argumento FilterSpecs é uma lista separada de ponto-e-vírgula de especificações. Onde cada especificação está

SPEC = // especificação vazia, igual a * | NOME // Apenas um nome que o nível é o nível padrão | NOME: 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 que acontecem por padrão, caso contrário.

Em que Nome é o nome de um ILoggger (caso importa), o nome pode ter um * que atua como um caractere curinga AS A SUFFIX. Portanto, Net* corresponderá a todos os agentes que começam com o 'Net'.

O LEVEL é um número ou uma cadeia de caracteres LogLevel. 0=Rastreamento, 1=Depuração, 2=Informações, 3=Aviso, 4=Erro, Crítico=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 para o EventSource.

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

Além do argumento nível e FilterSpec, você também pode definir palavras-chave EventSource. Veja a definição de palavras-chave abaixo, mas basicamente você pode decidir se deseja ter

  • Keywords.Message – Você obtém o evento com os dados em formato analisado.
  • Keywords.JsonMessage – você obtém um evento com os dados no formato de análise, mas como um blob JSON (não dividido por argumento ...)
  • Keywords.FormattedMessage – você obtém um evento com os dados formatados como uma cadeia de caracteres

Espera-se que você ative apenas uma dessas palavras-chave de cada vez, mas poderá ativá-las todas (e obter os mesmos dados registrados de três maneiras diferentes.

Uso de exemplo

Este exemplo mostra como usar um EventListener para obter informações de ILogging

classe MyEventListener: EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource.Name == "Microsoft-Extensions-Logging") { // initialize uma cadeia de caracteres, dicionário de cadeia de caracteres de argumentos para passar para o EventSource. Ative os agentes correspondentes a App* à Informação, todo o resto () é o nível padrão (que é EventLevel.Error) var args = new Dictionary<string, string>() { { "FilterSpecs", "App:Information;*" } }; Defina o nível padrão (verbosidade) como Erro e peça apenas as mensagens formatadas nesse caso. 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 {0}: {1}", eventData.Payload[2], eventData.Payload[4]); }

LoggingEventSource.Keywords

Isso é público do ponto de vista do consumidor do EventSource, mas como essas definições não são necessárias fora dessa classe