如何在log4net布局模式中插入选项卡?

时间:2010-10-14 13:51:08

标签: log4net

我的需求很简单 - 我希望能够在Excel中打开我的文本日志文件,以便在与日志字段匹配的列中自动将其分解。

为此,我需要用标签分隔日志字段。

我的模式是:%utcdate [%thread] %-5level %logger - %message%newline

我需要这样的东西: %utcdate%tab[%thread]%tab%-5level%tab%logger%tab%message%newline

感谢。

5 个答案:

答案 0 :(得分:46)

警告:我实际上并没有使用过log4net。但如果我理解正确,配置是一个XML文件,不是吗?而且模式只是带有一些特殊标记的文本。那么您是否尝试在模式中嵌入实际制表符?选项卡的XML序列为	,例如:

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