Правильная реализация NLog и Prism

Как лучше всего реализовать NLog в моем приложении Prism / CAL WPF? Это может быть любительский вопрос, я немного новичок во всей структуре Prism :)

Я подумал о том, чтобы поместить ссылку на dll NLog в модуль инфраструктуры и создать одноэлементный класс оболочки, например. MyLogger. Я думал о том, чтобы иметь возможность иметь ссылку на реализацию 1 регистратора где-нибудь в центральном месте, на которое все ссылается, и единственное, что я знаю в Prism, это ваш модуль инфраструктуры.

Другой очевидный способ - добавить ссылку на NLog к каждому модулю, но я думаю, что это нарушит цель разделения и всего остального.

Любые идеи были бы наиболее полезны

С Уважением


person Wilmar    schedule 14.05.2010    source источник


Ответы (1)


Я бы порекомендовал что-то похожее на вашу первую идею, хотя оно использует уже существующий интерфейс в Prism.

Хотя я не уверен, какие сигнатуры методов доступны вам в NLog, вы можете рассмотреть возможность использования Prism интерфейс ILoggerFacade, который обычно определяется в вашем загрузчике (см. StockTraderRI для примера того, как это настроено). Обычно это действует как переход к интерфейсу составного журнала Microsoft, но нет причин, по которым вы не можете использовать это для подключения к своему собственному регистратору.

Несколько причин рассмотреть этот подход:

  1. Он использует уже существующий интерфейс ILoggerFacade во фреймворке Prism, с которым будут знакомы другие разработчики.
  2. Если позже вы решите перейти на другую платформу ведения журнала, вам просто нужно будет заменить объект, стоящий за реализацией ILoggerFacade.

Другой подход заключался бы в том, как вы предлагаете: создать интерфейс, который определяет службу для NLog (или предоставить существующий интерфейс NLog) в вашей инфраструктурной DLL, и зарегистрировать реализацию этой службы в вашем загрузчике. Затем вы можете использовать свой контейнер для внедрения зависимостей, чтобы получить ссылку на службу регистратора в ваших модулях. Обратите внимание, однако, что это действительно просто воспроизводит то, что интерфейс ILoggerFacade уже дает вам.

person Matt Jordan    schedule 14.01.2011