Есть ли в.Net TraceSource/TraceListener framework что-то похожее на форматеры log4net?

Я начал со встроенных классов TraceSource и TraceListener, и я хотел бы изменить формат вывода событий независимо от TraceSources и TraceListener. Кажется, что TraceListeners применяют свое собственное форматирование. Можно ли полностью изменить форматирование, не создавая новый класс для каждого TraceListener, который я использую?

4 ответа

Решение

Блок приложения для ведения журналов библиотеки предприятия ( http://msdn.microsoft.com/en-us/library/cc309506.aspx) построен на классах.Net TraceSource и TraceListener (так что вы можете просто вставить его в свой проект и это будет работать) и поддерживает форматирование сообщений, которое вы можете настроить в web.config (или app.config).

Это слишком поздно, но для всех опоздавших, которые могут искать решение TraceSource/TraceListener, которое поддерживает форматирование, подобное форматированию, доступному в log4net, NLog и LAB, вы можете попробовать Ukadc.Diagnostics. Вы можете настроить предоставляемые Ukadc TraceListener s с помощью строки форматирования, и она будет применена, когда трассировки будут записаны в слушатель. Вы также можете написать свои собственные токены и добавить их в оператор форматирования. Например, я написал один для удовольствия, который просто увеличивает счетчик каждый раз, когда его значение извлекается. В результате в файле журнала каждая строка получает последовательно увеличивающееся число. Я написал еще один, который позволяет добавить информацию из Trace.CorrelationManager.LogicalOperationStack в вывод.

Сейчас у меня нет свободного доступа к моему компьютеру, на котором он работает, или я бы опубликовал эти примеры.

Вы можете использовать прямой Write() или же WriteLine() методы на Trace положить прямой текст в ваш TraceListener.

Для тех, кто попадает сюда и все еще ищет пользовательское форматирование для TraceListeners, есть также Essential.Diagnostics https://essentialdiagnostics.codeplex.com/ (раскрытие: я участвую в проекте).

Чтобы ответить на исходный вопрос, TraceListener может принимать пользовательские свойства в конфигурации, поэтому можно написать один TraceListener, который обрабатывает несколько форматов в зависимости от конфигурации, что может быть более гибким, чем запись нескольких.

Это то, что есть в Essential.Diagnostics: у него есть как ColoredConsoleTraceListener, так и RollingFileTraceListener, которые поддерживают строки произвольного формата, причем многие значения формата уже доступны.

Другие вопросы по тегам