MVC 5 / .Net Framwork с Unity IoC - Регистрация ILogger - PullRequest
0 голосов
/ 22 ноября 2018

Для моего текущего проекта, среды WebAPI / MVC, я использую Unity IoC для DI.

Поскольку в инфраструктуре MVC 5 / .Net нет встроенной регистрации, поэтому мне нужно что-то, но я хочу такжеиспользуйте DI для ссылки на службу, но я не знаю, как настроить / зарегистрировать службу ведения журнала.

Для всех других служб в приложении это просто случай добавления сопоставлений в RegisterTypes in UnityConfig.cs

Целевым развертыванием будет служба Azure Web App, поэтому мне нужно кое-что с этими возможностями.

Если я смог использовать .Net Core, проблема решена, все это естьготов, но не могу этого сделать (не спрашивай почему, но я пытаюсь) ...

1 Ответ

0 голосов
/ 22 ноября 2018

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

...