2010-05-14 6 views
5

Что было бы лучшим способом реализовать NLog в приложении Prism/CAL WPF. Это может быть любительский вопрос, я немного новичок во всей инфраструктуре Prism :)Надлежащая реализация NLog и Prism

Я думал о том, чтобы поместить ссылку на DLL NLog в модуль инфраструктуры и сделать оболочку singleton class, например. MyLogger. Мое мышление состояло в том, чтобы иметь ссылку на реализацию 1 logger где-то в центральном месте, на которое ссылается все, и единственное, что я знаю в Prism, будет вашим модулем инфраструктуры.

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

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

С уважением

ответ

4

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

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

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

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

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

Смежные вопросы