我的需求很简单 - 我希望能够在Excel中打开我的文本日志文件,以便在与日志字段匹配的列中自动将其分解。
为此,我需要用标签分隔日志字段。
我的模式是:%utcdate [%thread] %-5level %logger - %message%newline
我需要这样的东西:
%utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline
感谢。
答案 0 :(得分:46)
警告:我实际上并没有使用过log4net。但如果我理解正确,配置是一个XML文件,不是吗?而且模式只是带有一些特殊标记的文本。那么您是否尝试在模式中嵌入实际制表符?选项卡的XML序列为	
,例如:
<conversionPattern value="%utcdate	[%thread]	%-5level	%logger	%message%newline" />
或者如果您以其他方式提供模式(可能通过PatternString
constructor或其他方式),只需在您传入的字符串中包含制表符。该构造函数的文档将遵循{{ 1}} docs来讨论字符串本身,以及there they say:
您可以在转换模式中插入任何文字文本。
(他们的重点。)值得一试,无论如何......
答案 1 :(得分:7)
这对我有用:
1)实例化日志类时,添加以下行:
log4net.GlobalContext.Properties["tab"] = "\t";
2)然后在log4net XML中,引用新创建的log4net属性。例如:
<conversionPattern value="%property{tab}%message%newline" />
答案 2 :(得分:2)
您可以将标签键入模式而不转义(请参阅关卡和日期之间的空格):
<conversionPattern value="%level %date{HH:mm:ss,fff} ..." />
我无法在visual studio中写选项卡,因为它会写空格,但是我将选项卡键入记事本++复制它(ctrl + c ctrl + v)并且它正在工作。
编辑:堆栈溢出用空格替换了我的选项卡。所以你需要输入自己的标签
答案 3 :(得分:0)
如果这只是关于Excel,那么你可以使用其他一些分隔符,甚至;
就足够了。
另一种选择是编写自己的模式转换器。可以找到一个示例here。
答案 4 :(得分:0)
log4j2模式布局中的选项卡为: \ t