LoggingEventSource Класс

Определение

Переместите все журналы на основе ILogger в журнал 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
Наследование
LoggingEventSource
Атрибуты

Примеры

В этом примере показано, как использовать EventListener для получения сведений об 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]}");
    }
}

Комментарии

Чтобы включить этот вход, включите EventSource с именем Microsoft-Extensions-Logging. При включении EventSource заданный объект EventLevel преобразуется на уровень, связанный с ILogger (таким образомDebug = verbose, , ). Informational = InformationalCritical == Critical Это позволяет выполнять фильтрацию по уровню событий простым способом.

Для более точного управления можно указать аргумент EventSource с именем FilterSpecs. Аргумент FilterSpecs представляет собой разделенный точкой с запятой список спецификаций. Где указана каждая спецификация:

SPEC = // Пустая спецификация, аналогичная *.

| ИМЯ // Именованная спецификация. Использует уровень по умолчанию.

| ИМЯ: LEVEL // Указывает уровень для определенного средства ведения журнала (может иметь суффикс * ).

Если параметр UseAppFilters указан в параметре FilterSpecs, он не отключает все категории, что происходит по умолчанию.

Name — имя ILogger (дело имеет значение) и может заканчиваться *, который выступает в качестве подстановочного знака. Например, Net* будет соответствовать любым средствам ведения журнала, начинающимся с "Net".

LEVEL — это число или LogLevel строка (0=Trace, 1=Debug, 2=Information, 3=Warning, 4=Error, Critical=5). Это указывает уровень связанного шаблона. Если номер не указан (первая форма спецификации), это уровень по умолчанию для EventSource.

Первое совпадение используется, если определенное имя соответствует нескольким шаблонам.

Помимо уровня и FilterSpecs аргумента, можно также задать ключевые слова EventSource:

* Keywords.Message — событие содержит данные в синтаксическом виде.

* Keywords.JsonMessage — событие содержит данные в синтаксическом виде, но в виде большого двоичного объекта JSON (не разбитого по аргументу).

* Keywords.FormattedMessage — событие содержит данные, отформатированные в виде строки.

Ожидается, что одновременно включается только один из этих ключевых слов, но их можно включить (и получить те же данные, зарегистрированные тремя разными способами).

Применяется к