2009-08-18 3 views
2

Я недавно рассматривал возможность абстрагирования моего ведения журнала через приложение. Более конкретный пост на другой ресурс, привел к рекомендации «Распространенные библиотек инфраструктуры»:Тестирование .NET с использованием общих библиотек инфраструктуры:

http://netcommon.sourceforge.net/

В частности, класс Common.Logging, который обеспечивает общий интерфейс, который может сидеть перед рядом (например, log4net).

Я немного ненавижу, чтобы представить еще один фрагмент стороннего кода в моем проекте.

Кто-нибудь пользовался этой библиотекой? Мне было бы интересно услышать ваши впечатления.

Благодаря

ответ

1

Вы собираетесь переключение между лесозаготовительных проектов, упомянутых выше?

Вы распространяете источник кому-то, кто может использовать один из перечисленных проектов ведения журнала, который вы не используете?

  1. Есть много более лесозаготовительных проектов, чем те, поддерживаемых Common.Logging
  2. Это, кажется, много, как ODBC сделал лет назад. Он продается как взаимозаменяемый, но как только вы используете одну специфическую функцию поставщика, вы больше не можете переключаться.
  3. Когда что-то идет не так, вы регистрируете 2 слоя для отладки.

Снова; если вы не собираетесь переключать библиотеки, я бы не использовал класс Common.Logging.

+0

К первым вопросам: Может быть, и нет. У меня такие же сомнения, о которых вы говорили. Каким бы способом я ни пошел, я все равно буду абстрагироваться от log4net, так как я не уверен, что буду придерживаться его, но более чем это будет моим собственным классом-оболочкой, а не этой библиотекой. – UpTheCreek

4

Я использовал библиотеку общей инфраструктуры с log4net, и она работала хорошо. Я использовал его, а не только log4net, потому что мой клиент выразил желание открыть возможность использования журнала Microsoft Enterprise Library (EntLib).

Я не уверен, почему Брэд Брюс советует не использовать этот слой абстракции - это было нелегко использовать и не вызывало никаких проблем. IMO log4net - это улицы, опережающие все остальное, но некоторые люди хотят EntLib только потому, что у него есть дополнительный коэффициент комфорта штампа Microsoft на нем. Пользуясь уровнем абстракции, я предоставляю моему клиенту свободу переключиться на EntLib без изменения кода или перекомпиляции - просто изменение файла конфигурации.

0

Поскольку я начал использовать log4net в своем приложении MVC, я стал беспокоиться о жесткой связи моих классов контроллеров с конкретной реализацией log4net. Это правда, что выполнение определенного интерфейса, определенного в Common.Logging (который, кстати, отражает зеркало log4net), таков: обязательство. Но релиз Common.Logging 2.0 дал мне мгновенный уровень абстракции, а интерфейс log4net, который он имитирует, проверен и прост в использовании. Кроме того, мне нравится идея использовать, тестировать и экспериментировать с различными конкретными реализациями ведения журнала, просто добавляя ссылку и обновляя файл Web.config.

Все точки Брюса совершенно верны. Абстракция может быть не более чем ложным чувством безопасности, и решение может в конечном итоге укусить меня в прикладе. Тем не менее, иногда вам просто нужно ошибаться на стороне лучших практик до тех пор, пока не появятся практики бестеров. :-)

1

В качестве быстрого наблюдения ...Сегодня я был на каротаже, и решил попытаться запустить Chainsaw, чтобы я мог просматривать журналы своего приложения в режиме реального времени. Тем не менее, я не смог получить UdpReceiver, работающий в Chainsaw.

Решение заключалось в том, чтобы забыть о Chainsaw и включить NLog (через настройки конфигурации Common.Logging) и вместо этого использовать NLogViewer. NLog и NLogViewer работали вместе как рекламируемые, и теперь я могу просматривать журналы, как они есть. Я смог включить NLog в мое приложение, не изменяя свою базу кода на один бит. Выигрыш, включающий аббревиатуру Common.Logging, приходил намного раньше, чем я ожидал.

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