Log4j模式,如何表示空格

时间:2014-03-24 22:39:46

标签: java regex parsing log4j apache-chainsaw

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

感谢任何帮助。谢谢。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我不确定你真正想要实现的目标,但你应该看看" 格式修饰符" PatternLayout documentation的解释。

答案 2 :(得分:0)

我刚尝试了Log4j模式,LogMX正确解析了新生成的日志文件(使用带有此模式的Log4jPattern解析器)。你能解释"当我解析" 时,标签分离是不可靠的吗?

尽管%m%n之间的额外空格字符很奇怪:每条日志消息都应以空格字符结尾才能正确解析。

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

答案 3 :(得分:0)

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

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

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