Подтвердить что ты не робот

Есть ли альтернативы Common.Logging?

EDIT: Common.Logging 2.1.1 был выпущен 9 июня 2012 года, а страница Github довольно активен, автор комментирует конкретно о состоянии проекта.

Мы смотрим на использование Common.Logging в новом .NET-проекте, но я немного обеспокоен тем, что проект кажется стали неактивными. Страница была обновлена ​​в последний раз в 2009 году, а последняя версия, доступная на SourceForge был создан в 2010 году. Я уже нашел несовместимость с NLog 2, и я обеспокоен тем, что с течением времени это может стать большой проблемой. Я заметил, что Enterprise Library 5.0 не указан как совместимый, но я его не пробовал.

Существуют ли другие альтернативы, обеспечивающие аналогичный общий интерфейс?

4b9b3361

Ответ 1

Я использую Common.Logging в течение четырех лет, и я могу использовать его с NLog2. Чтобы полностью ответить на ваш вопрос, нам нужно более внимательно изучить Common.Logging. Common.Logging дает вам два преимущества:

  • Так как 1.x, Common.Logging позволяют писать ваше приложение независимо от структуры ведения журнала. Таким образом, вы можете легко перейти от одной системы ведения журнала к другой, даже не перекомпилируя приложение. Это особенно полезно для разработки общей библиотеки, которая может использоваться различными приложениями, использующими разные рамки ведения журнала.

  • Запуск 2.x, Common.Logging позволяет собирать информацию о регистрации из различных фреймворков ведения журнала. Скажем, мы разрабатываем приложение и хотим использовать две библиотеки 3-й части, например A3rd.dll и B3rd.dll. A3rd.dll использует log4net, но B3rd.dll использует NLog. Теперь, как вы консолидируете информацию журнала из A3rd.dll и B3rd.dll в один файл журнала (или систему мониторинга журналов)? Common.Logging может помочь, например, он может захватить сообщение журнала из NLog и отправить его в log4net, а затем позволить log4net записать его в файл журнала или отправить его в любом месте, которое может сделать log4net.

Теперь вернемся к NLog2. API регистрации в NLog2 обратно совместим с NLog1, но API для настройки и таргетинга был изменен. Поэтому, если вам нужно отправить сообщение журнала в NLog2, вы можете просто выполнить перенаправление сборки (см. Мой ответ здесь: Может ли NLog v2 использоваться с Common.Logging).

Если вы хотите объединить сообщение NLog2 в другую структуру ведения журнала, используя Common.Logging, подход перенаправления сборки не будет работать. Необходимо создать специальный адаптер NLog2.

Как сказал @Kugel, бездействие может означать стабильный и зрелый. Поскольку Common.Logging работает с различными форматами ведения журнала, вряд ли будет выпущена новая версия каждый раз, когда одна из поддерживаемых фреймворков делает выпуск. В противном случае это может быть больше путаницы, чем помощи. Следовательно, перенаправление сборки всегда следует рассматривать первыми. Только когда возникает проблема несовместимости, как я уже упоминал о перенаправлении сообщений NLog2, отправьте электронное письмо в список рассылки, и я уверен, что кто-то скачет и поможет.

Cheers, Kenneth

Ответ 2

если я хочу использовать неподдерживаемую библиотеку (например, NLog2), похоже, что один из вариантов будет реализовывать пользовательский FactoryAdapter. Я не уверен, насколько это было бы сложно, но это может быть вариант:

Если вы хотите подключить новую, но неподдерживаемую библиотеку протоколирования, вы необходимо предоставить адаптер log7 factory, который реализует Интерфейс Common.Logging.ILoggerFactoryAdapter. Лесорубы должны внедрять интерфейс Common.Logging.ILog.

Источник: http://netcommon.sourceforge.net/docs/2.0.0/reference/html/ch01.html#logging-advanced-customfactoryadapter

Update:

Вот моя первая попытка реализации для NLog 2, использовать на свой страх и риск. Любые комментарии приветствуются:

https://gist.github.com/1107148