Есть ли фасад регистрации для мира .NET? - PullRequest
40 голосов
/ 29 апреля 2010

Я немного новичок в стеке .NET, и мне было интересно, есть ли эквивалент slf4j для платформы .NET.Для меня вход на Фасад и возможность замены реализаций журналирования по мере необходимости просто имеет смысл.Более того, API-интерфейсы оболочки, доступные в slf4j, много раз спасли меня, когда мне нужно было использовать стороннюю библиотеку, которая была закодирована для единой среды ведения журнала, которую я не использовал.это действует как фасад между регистраторами, такими как log4net, nLog и Enterprise Library?Существуют ли обертки, которые позволяют мне вызывать вызовы этих библиотек и направлять их в другую библиотеку?Должен ли я начать проект с открытым исходным кодом, чтобы сделать это самостоятельно?Является ли этот вопрос дубликатом, потому что я не знаю, как правильно его задать?И наоборот, является ли распространенным способом сделать это с помощью аспектно-ориентированного программирования?

Ответы [ 7 ]

20 голосов
/ 29 апреля 2010

Извините, я использовал эту штуку и забыл, что это не версия Apache. Это на самом деле с открытым исходным кодом и часть проекта, называемого общей инфраструктурой. Это также называется common logging . Работает с MS Enterprise, log4net и другими. Хорошо работает.

10 голосов
/ 29 апреля 2010

Взгляните на замок Виндзор Лесозаготовительный комплекс .

Базовый код здесь .Адаптер Log4net здесь .NLog адаптер здесь .

Добавлен адаптер для Serilog .

Без адаптеров есть поддержка для ConsoleLogger, DiagnosticsLogger, StreamLogger и NullLogger.

Довольно просто написать адаптеры для любой другой среды ведения журналов.

9 голосов
/ 07 мая 2010

Я включаю Simple Logging Facade , потому что кажется, что он поддерживает Object Guy's Logging Framework для .Net из коробки.

5 голосов
/ 27 сентября 2012

У меня была такая же проблема.Пройдя через те, которые рекомендованы выше, я обнаружил Ninject.Extensions.Logging

Это здорово, поскольку фасад в любом случае лучше сочетать с DI

Поставляется с прокси для NLog, NLog2 & log4net .

Вот хороший пример того, как использовать его в сочетании с NLog: http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/

Я понимаю, что этому вопросу уже пару лет, но из-за полноты для других пользователей я все же решил опубликовать это "Решение"

4 голосов
/ 06 июня 2017

Обновление для .NET Core:

4 голосов
/ 15 июня 2015

С тех пор, как это было написано, появилась еще одна интересная оболочка для ведения журнала под названием Fody.Anotar . На сегодняшний день это, наверное, самый полный из них. Большинство других, за исключением Logging Faciliy, устарели и поддерживают только самые старые регистраторы.

Он имеет адаптеры для NLog, Log4Net, Serilog, CommongLogging, Catel, LibLog, MetroLog, NServiceBus и Splat и позволяет вам создавать адаптер для вашей собственной библиотеки.

Вы можете использовать Nuget для его установки. Ищите Anotar. *. Fody пакеты, например Anotar.NLog.Fody.

0 голосов
/ 11 апреля 2017

Я как-то нашел все решения здесь неудовлетворительными, особенно для библиотек / API. Хотя я никогда не думал, что смогу, на самом деле я написал «регистратор» с открытым исходным кодом, который должен решать большинство проблем.

Может быть, вы можете взглянуть на Dapplo.Log , вы можете получить его от NuGet.

Идея состоит в том, чтобы использовать Dapplo.Log в вашей библиотеке, и проект, который использует это, может направить (при необходимости) любой вывод журнала в выбранный им регистратор. Примеры направления вывода можно найти в тестах с реализациями некоторых основных структур здесь .

Возможно, он не идеален (пока), и я приветствую запросы или билеты.

...