Прежде всего, вам нужно выбрать библиотеку журналов - наиболее распространенными являются log4net и NLog .Уже есть тонны материалов с инструкцией по установке, включая официальные заметки.Вам не нужен DI для NLog, у него уже есть статический помощник, но вы можете инкапсулировать его в свою собственную абстракцию.Поэтому вам нужно иметь интерфейс, например, ILogger
и его реализацию - класс NLogLogger
.Поместите нужные вам методы в ILogger
так, как вам нравится - это может быть LogError(msg, ex)
, LogDebug(msg)
, LogInfo(msg)
или вместо этого один метод с параметром уровня Log(level, msg, ex)
, где ваш уровень - enum: Error
,Debug
, Trace
и т. Д. Вы можете поместить этот интерфейс в ядро приложения.
NLogLogger
будет конкретной реализацией логгера, так что вы можете позже заменить его.Поместите это в инфраструктуру.Реализуйте его вместе с официальным руководством, которое вы можете найти в репозитории GitHub.
Вы можете настроить NLog с файлом XML, просто поместите его в корень приложения и скопируйте один из примеров для записи журналов в файл или консоль.
В конце просто свяжите интерфейс с классом внутри конфигурации DI, как и любую другую абстракцию.Теперь вы можете вводить его в любом месте.