2

在 log4j 中,我们如何在模式中表示多个空格(如 : \s+)?我有这样的模式%d{ISO8601}\t%t\t%m %n,但是当我通过电锯和 LogMX 进行解析时,制表符分隔不可靠。我正在寻找替换 multiple-space-separated 而不是 tab-separated ,但我找不到任何东西。

任何帮助表示赞赏。谢谢你。

4

4 回答 4

3

log4j 中的布局模式不是正则表达式模式,不用于搜索字符串。顾名思义,它用于布置要由 log4j 打印的消息。使用 \s+ 之类的东西,它怎么知道要打印多少个空格?因此,如果您在消息布局中需要多个空格,则必须在模式中明确键入这些空格。

于 2014-03-25T08:12:55.587 回答
1

我不确定您真正想要实现什么,但您应该查看PatternLayout 文档的“格式修饰符”说明。

于 2014-03-25T08:22:20.270 回答
0

Chainsaw 使用 log4j 的“LogFilePatternReceiver”来处理日志文件。

LogFilePatternReceiver 具有合并多个空格的代码,但该代码使用 [ ]+ 而不是 \s+

我会考虑将其更改为使用 \s+。

于 2014-03-28T17:55:09.433 回答
0

我刚刚尝试了您的 Log4j 模式,并且 LogMX 正确解析了新生成的日志文件(使用带有此模式的 Log4jPattern 解析器)。您能解释一下“我在解析时制表符分隔不可靠”吗?

虽然%m和之间的额外空白字符%n很奇怪:每条日志消息都应以空白字符结尾,以便正确解析。

PS:我同意@FrVaBe 和@Lolo 的回答

于 2014-03-25T18:54:23.660 回答