我正在尝试使用logback.xml中的~
转换替换\n
换行符replace(p){r, t}
。
我有像
这样的图案布局%p %c [%t] \\(%M:%L\\) - %replace(%msg){'~', '\n'} %nopex %n
当我放\n
时,logback会将其更改为'n'。但是如果我放'\\\n'
那么它会保留两个反斜杠,即它保留'\\\n'
。在深入了解logback的源代码之前,我想检查一下是否有人试过/面对它?
对我来说,似乎我们无法使用replace方法为消息添加换行符!
它添加了一个额外的转义符(\\
)。
答案 0 :(得分:3)
可能的解决方法是使用正则表达式捕获组:
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %replace(%msg){'(\n)','$1'}%n</pattern>
但是仍然无法像标签'\ t'
那样添加其他转义字符答案 1 :(得分:0)
要在回退xml配置文件中添加转义字符,请使用xml字符实体引用。就您而言:
%p %c [%t] \\(%M:%L\\) - %replace(%msg){'~', '
'} %nopex %n
类似地,要将异常堆栈跟踪中的\ n替换为\ r,可以这样做(例如,如果您是通过操作员将日志废弃并将其吸收为弹性的):
%replace(%ex){'\n', '
'}
来源:Noisyfox在https://github.com/symphoniacloud/lambda-monitoring/issues/4上的评论