Есть ли в.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, которые поддерживают строки произвольного формата, причем многие значения формата уже доступны.