Разрешите Microsoft.Extensions.Logging ILogger вместо ILogger <T>с Autofac и SeriLog - PullRequest
2 голосов
/ 06 ноября 2019

При работе с 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Войдите в мою пользовательскую абстракцию, но таким образом я бы потерял способность к структурированной регистрации и т. Д.

Было бы неплохо, если бы кто-то мог дать какое-то руководство.

...