Ведение журнала в CSV с использованием корпоративной библиотеки с заголовком

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