ASP.NET Core ILoggerFactory инициализирует экземпляр для каждого зарегистрированного LoggerProvider? - PullRequest
0 голосов
/ 21 октября 2019

Я понимаю, что ASP.NET Core использует Microsoft.Extension.Logging для ведения журнала. Согласно официальному документу, шаблоны проекта ASP.NET Core по умолчанию вызывают CreateDefaultBuilder, который добавляет следующие поставщики журналов:

  • Отладка,
  • Консоль
  • EventSource
  • EventLog

Но никогда не упоминалось, какой поставщик будет использоваться (используется контейнером DI для создания фактического регистратора) по умолчанию. Например, если у меня есть класс, который вызывает _logger.LogError(ex, "ERROR", ex.Message), будет ли сообщение об ошибке отправлено на консоль, в окно отладки, в систему EventLog или на все? Преимущество использования ASP.NET Core состоит в том, что он освобождает разработчиков от написания утомительного стандартного кода, но в то же время это также вызывает много путаницы. Как LoggerFactory решает, какой loggerProvider использовать в этом случае? Если используются все зарегистрированные поставщики, означает ли это, что контейнер DI создает несколько экземпляров регистратора для одного интерфейса ILogger?

1 Ответ

0 голосов
/ 21 октября 2019

LoggerFactory создает регистратор со всеми поставщиками в CreateLoggers ()

, тогда Logger вызовет журнал для всех поставщиков регистраторов в Log (...)

...