Serilog DI в ASP.NET Core, какой интерфейс ILogger внедрить?C#

Место общения программистов C#
Ответить
Anonymous
 Serilog DI в ASP.NET Core, какой интерфейс ILogger внедрить?

Сообщение Anonymous »

Контекст

Я успешно настроил Serilog в своем приложении ASP.NET Core, осталась только часть DI.

Вопрос

Теперь у меня есть два интерфейса ILogger, один — Serilog.ILogger другой — Microsoft.Extensions.Logging.ILogger. Оба работают на основе моей конфигурации Serilog, и я не знаю, что использовать? (Я имею в виду, что после установки конфигурации Serilog Microsoft.Extensions.Logging.ILogger также корректно регистрируется через Serilog, поэтому моя конфигурация учитывается)

В случае, если Microsoft .Extensions.Logging.ILogger Я знаю, как настроить DI, чтобы он работал.
Однако в случае Serilog.ILogger я вижу, что Serilog имеет статический Log.Logger экземпляр (вероятно, одноэлементный)

Я не хочу использовать это статическое свойство в своем коде, в основном из соображений тестирования, поэтому я хотел бы внедрить его в конструктор. Решением будет:

Код: Выделить всё

services.AddSingleton(Log.Logger); // Log.Logger is a singleton anyway
.. но меня беспокоит этот синглтон в веб-приложении, когда множество нескольких потоков будут использовать один и тот же экземпляр одновременно. Это потокобезопасно? Если это не так, то каким будет решение использовать Serilog.ILogger с DI?

Подробнее здесь: https://stackoverflow.com/questions/614 ... -to-inject
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»