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

gam*_*r17 4 log4j log4j2

我正在使用下面的转换模式

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

但我想删除新行字符。

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

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

Tom*_*ski 5

看来您没有使用正确的语法%replace- 请参阅Log4j 布局以获取正确的语法。

\n\n

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

\n\n
%replace{%msg}{[\\r\\n]+}{}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,在某些情况下,完全删除换行符可能会使日志难以阅读。我建议您不要删除换行符,而是用一些东西替换换行符,例如用这样的箭头字符: \xe2\x86\xb5 (我选择它是因为它与Enter 键上的符号相似)。

\n\n

所以我建议使用这样的模式:

\n\n
%replace{%msg}{\\r?\\n}{\xe2\x86\xb5}\n
Run Code Online (Sandbox Code Playgroud)\n