Переход на семантическое ведение журналов с помощью Castle ILogger и log4net

Как лучше всего начать использовать новый .NET 4.5 EventSource для ведения журнала для приложения, которое в настоящее время использует Logging Facility компании Castle. с log4net.

Первоначально я думал, что можно было бы расширить интерфейс Castle ILogger для поддержки более богатого семантического ведения журнала, который облегчает EventSource (Вопрос поднят), но теперь я не уверен, смогут ли они действительно так хорошо работать вместе.

Я отмечаю, что блок приложения Semantic Logging предоставляет одну реализацию использования EventSource, но это, конечно, не использование ILogger.


person David Gardiner    schedule 18.02.2014    source источник


Ответы (1)


Если вы хотите перейти на семантическое ведение журнала в целом, а не только на реализацию SLAB, возможно, вам будет проще перейти на Serilog. (Отказ от ответственности — я начал проект, хотя сейчас он хорошо зарекомендовал себя).

Serilog реализует те же концепции семантического ведения журнала, что и EventSource и друзья, но использует классический API в стиле «ILogger», который вы получаете от Castle.

log.Information("The cart contains {CartSize} items", cart.Count);

В этом примере структурированное свойство с именем CartSize связывается с событием так же, как если бы вы передавали параметр методу EventSource. (Вы даже можете использовать классические спецификаторы числового формата {0} и по-прежнему получать структурированные события с пронумерованными, а не именованными свойствами!)

Поскольку API-интерфейсы совместимы, перенос существующих приложений из одного стиля ILogger в другой требует меньше усилий, чем перенос всего на EventSources. Есть несколько способов приблизиться к этому, если вы решите, что это вариант, я буду следить за любыми дополнительными вопросами.

person Nicholas Blumhardt    schedule 23.09.2014