При работе с Microsoft.Extensions.Logging обычно регистрируется ILoggerfactory
и сопоставление между реализацией регистратора и ILogger<>
.
Я искал способ ввести неуниверсальный ILogger
и позволяя IoC-контейнеру (в данном случае Autofac) генерировать набранный ILogger<>
с введением класса.
В этой статье https://blog.rsuter.com/logging-with-ilogger-recommendations-and-best-practices/ сказано:
Предпочитают вводить интерфейс ILogger
и, если необходимо, интерфейс ILogger<T>
. В идеале конструктор вашего класса запрашивает ILogger, а среда IoC создает экземпляр ILogger<T>
, где T
- запрашивающий класс.
И я согласен с этим, я бы хотел бытьвозможность вставлять только ILogger и получать правильный контекстный экземпляр.
Автоматическая интеграция serilog (https://github.com/nblumhardt/autofac-serilog-integration) делает что-то подобное, но для Serilog.
Эта библиотека настраиваетAutofac для автоматической настройки правильного контекстного регистратора для каждого класса, в который вводится ILogger
.
Так есть ли способ заставить это работать с Autofac
, SeriLog
и Microsoft.Extensions.Logging
?
Я попробовал немного без особых усилий.
Стивен предложил что-то классное , над которым я могу работать, используя приведенную выше интеграцию автофокуса с Serilog и добавив SerilogВойдите в мою пользовательскую абстракцию, но таким образом я бы потерял способность к структурированной регистрации и т. Д.
Было бы неплохо, если бы кто-то мог дать какое-то руководство.