LoggingEventSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Puentea todo el registro basado en ILogger al registro 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
- Herencia
- Atributos
Ejemplos
En este ejemplo se muestra cómo usar eventListener para obtener información 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]}");
}
}
Comentarios
Para activar este registro, habilite eventSource llamado Microsoft-Extensions-Logging. Al habilitar EventSource, eventLevel establecido se traduce en el nivel asociado a ILogger (por lo tantoDebugverbose = , , ). Critical == CriticalInformational = Informational Esto le permite filtrar por nivel de evento de una manera sencilla.
Para un control más preciso, puede especificar un argumento EventSource denominado FilterSpecs. El FilterSpecs argumento es una lista separada por punto y coma de especificaciones. Donde cada especificación es:
SPEC = // Especificación vacía, igual que *.
| NAME // Especificación con nombre. Usa el nivel predeterminado.
| NAME : LEVEL // Especifica el nivel de un registrador determinado (puede tener un sufijo * ).
Cuando se especifica "UseAppFilters" en FilterSpecs, evita deshabilitar todas las categorías, lo que sucede de forma predeterminada.
Name es el nombre de un ILogger objeto (importa mayúsculas y minúsculas) y puede terminar con *, que actúa como carácter comodín. Por ejemplo, Net* coincidirá con los registradores que empiecen por "Net".
LEVEL es un número o una LogLevel cadena (0=Trace, 1=Debug, 2=Information, 3=Warning, 4=Error, Critical=5). Esto especifica el nivel del patrón asociado. Si no se especifica el número (primera forma de la especificación), es el nivel predeterminado de EventSource.
La primera coincidencia se usa si un nombre determinado coincide con más de un patrón.
Además del nivel y FilterSpecs el argumento, también puede establecer palabras clave EventSource:
* Keywords.Message: el evento contiene datos en formato analizado.
* Keywords.JsonMessage: el evento contiene datos en formato analizado, pero como un blob JSON (no se divide por argumento).
* Keywords.FormattedMessage: el evento contiene datos con formato de cadena.
Se espera que solo una de estas palabras clave esté activada cada vez, pero puede activarlas todas (y obtener los mismos datos registrados de tres maneras diferentes).