Я понимаю, что 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?