如何在logback中从Java堆栈跟踪中删除换行符?
我正在尝试从Java堆栈跟踪中删除换行符 我有以下回写模式-如何在logback中从Java堆栈跟踪中删除换行符?,java,regex,logback,Java,Regex,Logback,我正在尝试从Java堆栈跟踪中删除换行符 我有以下回写模式- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'\n', ''}%n</pattern> %d{HH:mm:ss.SSS}[%thread]-5级%logger{36}-%replace(%msg){'\n',''}%n 我希望它能取代消息中的换行符,但事实并非如此。我看到用新行打印出来的痕迹 但是,如果我
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %replace(%msg){'\n', ''}%n</pattern>
%d{HH:mm:ss.SSS}[%thread]-5级%logger{36}-%replace(%msg){'\n',''}%n
我希望它能取代消息中的换行符,但事实并非如此。我看到用新行打印出来的痕迹
但是,如果我使用以下模式(仅用于测试目的)——
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%replace(%msg){'.*','x'}%n
我发现消息已被字符x替换,但堆栈跟踪仍按原样打印
这让我相信logback会独立处理stacktraces。
我已经阅读了logback文档,它说可以通过(%ex)引用stacktraes
但是,对于appender,一次只能有一个模式处于活动状态。
如何确保在stacktraces中不获取换行符?在查看Logback formatter如何在我的Windows框中构建字符串后,我发现堆栈跟踪包含每个新行的
\r\n
,因此如果使用Windows,请尝试以下操作:
<pattern>........ %replace(%ex){'[\r\n]+', '\\n'}%nopex%n</pattern>
…..%替换(%ex){'[\r\n]+','\\n'}%nopex%n
说明:
:起初我只尝试了\r\n
,但后来我在日志中有了新行字符,然后是一个“X”。相反,使用%replace(%ex){'\n',X'}
删除所有出现的%replace(%ex){'[\r\n]+','}
和\r
。如果要显示字符串\n
以指示此处有新行,可以在“\n”
第二个参数中添加%replace
'\\n'
:我不知道为什么,但是如果您在%nopex
上使用%ex
,Logback会向您的条目添加第二个堆栈跟踪,这次是所有新行。使用%replace
(请参阅),它将通过假装使用实际堆栈而不使用任何%nopex
来抑制第二个堆栈%replace
%replace
,在同一个日志条目字段中包含(请参阅)不禁用日志,而是过滤堆栈跟踪
<pattern>........ %replace(%ex){'[\r\n]+', '\\n'}%nopex%n</pattern>