#logging #enterprise-library
#ведение журнала #enterprise-library
Вопрос:
Я использую корпоративную библиотеку для записи данных в файл CSV. Выполняется запись в файл CSV, но он не включает заголовки и записывает все параметры в другую строку.Что-то вроде этого:
Timestamp: 4/14/2011 6:41:49 PM
Message: Starting Application
Category: General
Priority: -1
EventId: 0
Severity: Information
Title:
Machine:
App Domain: EnterpriseLib.vshost.exe
ProcessId: 10792
Process Name:
Thread Name:
Win32 ThreadId:7976
Extended Properties:
Есть ли способ отформатировать выходной журнал так, чтобы параметры были перечислены в табличной форме с заголовками типа Timestamp , Category и так далее и тому подобное.
Ответ №1:
Под заголовками вы подразумеваете заголовок в верхней части файла? Или заголовок для каждой записи в файле?
Формат вывода контролируется шаблоном форматирования. Обычно это определяется в файле конфигурации. Для файла CSV вы хотели бы использовать шаблон, подобный:
<formatters>
<add template="amp;quot;{timestamp}amp;quot;,amp;quot;{severity}amp;quot;,amp;quot;{message}amp;quot;"
type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null"
name="SimpleTextFormatter" />
</formatters>
Это привело бы к следующему результату:
«14.04.2011, 19:34:53 вечера», «Информация», «Это сообщение!»
Вы можете использовать инструмент настройки для вставки любых других токенов (например, {category} ), которые вы хотите зарегистрировать.
Обратите внимание, что если вам нужен правильный формат CSV, вам нужно убедиться, что двойные кавычки экранированы.
Комментарии:
1. Я мог бы получить форматирование CSV, экранировав двойные кавычки. Под заголовком я подразумеваю добавление заголовка к каждому столбцу. Как и над отображаемым временем, я хочу, чтобы была написана «временная метка», над сообщением я хочу, чтобы было написано «сообщение» и так далее..
2. Если вы хотите, чтобы ваш заголовок отображался для каждой записи, вы можете просто установить свойство header прослушивателя. Если вы хотите, чтобы заголовок находился только в верхней части файла, я не думаю, что это поддерживается из коробки. Вы могли бы написать свой собственный прослушиватель для этого или написать скрипт, который добавляет заголовок после закрытия файла журнала.