Подтвердить что ты не робот

Как вставить вкладки в шаблон макета log4net?

Моя потребность проста - я хочу, чтобы открыть файл текстового журнала в excel, чтобы он автоматически разбивал его в столбцах, соответствующих полям журнала.

Для этого мне нужны поля журнала, разделенные вкладкой.

Мой шаблон: %utcdate [%thread] %-5level %logger - %message%newline

Мне нужно что-то вроде: %utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline

Спасибо.

4b9b3361

Ответ 1

Предостережение: я фактически не использовал log4net. Но если я правильно понимаю, конфигурация - это XML файл, не так ли? И шаблон - это просто текст с некоторыми специальными токенами. Так вы попробовали внедрить фактические символы табуляции в свой шаблон? XML-последовательность для вкладки 	, например:

<conversionPattern value="%utcdate&#9;[%thread]&#9;%-5level&#9;%logger&#9;%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