如何从日志消息log4j中删除或替换换行符

时间:2018-07-22 14:20:32

标签: log4j log4j2

我正在使用以下转换模式

log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS Z}  [%t] %-5p %c- %m%n

但是我想删除换行符。

我尝试使用%replace(%ex){'[\r\n]+', '\\n'}%nopex%n

但是它不起作用%replace不起作用。它只会读取%r ,然后替换

3 个答案:

答案 0 :(得分:0)

似乎您没有使用%replace的正确语法-有关正确的语法,请参见Log4j Layouts

使用正确的语法,您可以使用以下表达式删除所有换行符:

%replace{%msg}{[\r\n]+}{}

但是,在某些情况下,完全删除换行符会使日志难以阅读。我建议,不要删除,而是用一些东西替换换行符,例如这样的arrow character: ↵(我选择它的原因是与Enter key上的符号相似)。

所以我建议使用这种模式:

%replace{%msg}{\r?\n}{↵}

答案 1 :(得分:0)

@Tomasz Linkowski建议的替代方法是在末尾添加新行

%replace{%msg}{[\r\n]}{}%n

答案 2 :(得分:0)

我也遇到了同样的问题,在对其进行调查后,我发现log4j 1.x上不存在%replace选项。

@Tomasz为log4j layouts添加的链接用于log4j 2.x(您可以在页面顶部的左侧看到该版本)。

此外,从this的答案中您可以了解到,并非log4j 2.x的所有选项都在1.x上可用