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
- Наследование
- Атрибуты
Примеры
В этом примере показано, как использовать 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 — событие содержит данные, отформатированные в виде строки.
Ожидается, что одновременно включается только один из этих ключевых слов, но их можно включить (и получить те же данные, зарегистрированные тремя разными способами).