Как вставить вкладки в шаблон макета log4net?
Моя потребность проста - я хочу, чтобы открыть файл текстового журнала в excel, чтобы он автоматически разбивал его в столбцах, соответствующих полям журнала.
Для этого мне нужны поля журнала, разделенные вкладкой.
Мой шаблон: %utcdate [%thread] %-5level %logger - %message%newline
Мне нужно что-то вроде:
%utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline
Спасибо.
Ответы
Ответ 1
Предостережение: я фактически не использовал log4net. Но если я правильно понимаю, конфигурация - это XML файл, не так ли? И шаблон - это просто текст с некоторыми специальными токенами. Так вы попробовали внедрить фактические символы табуляции в свой шаблон? XML-последовательность для вкладки 	
, например:
<conversionPattern value="%utcdate	[%thread]	%-5level	%logger	%message%newline" />
Или, если вы поставляете шаблон другим способом (возможно, с помощью конструктора PatternString
или любого другого), просто включите символы табуляции в строка, которую вы передаете. Документы для этого конструктора отсылают к документам PatternLayout
, чтобы говорить о самой строке, и там они говорят
Вы можете вставить любой литеральный текст в шаблон преобразования.
(Их внимание.) Стоит попробовать, во всяком случае...
Ответ 2
Это сработало для меня:
1) Когда ваш класс ведения журнала создается, добавьте эту строку:
log4net.GlobalContext.Properties["tab"] = "\t";
2) Затем в XML файле log4net сделайте ссылку на свое вновь созданное свойство log4net. Например:
<conversionPattern value="%property{tab}%message%newline" />
Ответ 3
Вы можете ввести вкладку в шаблон без экранирования (см. пробел между уровнем и датой):
<conversionPattern value="%level %date{HH:mm:ss,fff} ..." />
Я не могу написать вкладку в visual studio, потому что она пишет пробелы, но я набрал вкладку в блокнот ++, скопирую ее (ctrl + c ctrl + v) и она работает.
EDIT: переполнение стека заменило мою вкладку пробелами. Поэтому вам нужно ввести собственную вкладку
Ответ 4
Если речь идет только о Excel, вы можете использовать другой разделитель, возможно, даже ;
будет достаточно хорошим.
Другой вариант - написать собственный конвертер шаблонов. Пример можно найти здесь.
Ответ 5
Вкладка в шаблоне log4j2 выглядит так: \ t