Есть ли в .Net TraceSource / TraceListener framework что-то похожее на форматеры log4net? - PullRequest
6 голосов
/ 16 октября 2008

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

Ответы [ 4 ]

5 голосов
/ 12 мая 2009

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

2 голосов
/ 27 августа 2010

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

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

0 голосов
/ 10 февраля 2017

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

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

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

0 голосов
/ 30 апреля 2009

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

...