Я пытаюсь реализовать свой собственный ILoggerProvider (с записью журналов в базу данных) для использования в моих приложениях.
Я использую AddDbContext<DbContext>()
для внедрения контекста базы данных и использую метод AddLogging()
для внедрения LoggerProvider, добавляя моего собственного провайдера через метод расширения ILoggingBuilder. Таким образом, я могу конструктор легко внедрить DbContext и ILogger<T>
во все мои контроллеры API.
Единственная (и самая проблемная) проблема, с которой я сейчас сталкиваюсь, - это определение этих зависимостей: в то время как DbContext вводится как зависимая область, ILogger
- нет, заставляя меня передать параметр ServiceLifetime.Singleton
в вызов AddDbContext
. Это иногда вызывает проблемы при сохранении нескольких журналов за короткое время, вызывая исключение.
Короче говоря, существует ли какой-либо общий шаблон для реализации области действия ILoggerProvider
с доступом к базе данных?