使用logback.xml中的replace(p){r,t}转换将'〜'替换为换行符('\ n')

时间:2016-03-03 07:20:43

标签: regex replace newline logback

我正在尝试使用logback.xml中的~转换替换\n换行符replace(p){r, t}

我有像

这样的图案布局
%p %c [%t] \\(%M:%L\\) - %replace(%msg){'~', '\n'}  %nopex %n

当我放\n时,logback会将其更改为'n'。但是如果我放'\\\n'那么它会保留两个反斜杠,即它保留'\\\n'。在深入了解logback的源代码之前,我想检查一下是否有人试过/面对它?

对我来说,似乎我们无法使用replace方法为消息添加换行符!

它添加了一个额外的转义符(\\)。

2 个答案:

答案 0 :(得分:3)

可能的解决方法是使用正则表达式捕获组: <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %replace(%msg){'(\n)','$1'}%n</pattern>

但是仍然无法像标签'\ t'

那样添加其他转义字符

我打开了一个问题https://jira.qos.ch/browse/LOGBACK-1261

答案 1 :(得分:0)

要在回退xml配置文件中添加转义字符,请使用xml字符实体引用。就您而言:

%p %c [%t] \\(%M:%L\\) - %replace(%msg){'~', '&#xa;'}  %nopex %n

类似地,要将异常堆栈跟踪中的\ n替换为\ r,可以这样做(例如,如果您是通过操作员将日志废弃并将其吸收为弹性的):

%replace(%ex){'\n', '&#xd;'}

来源:Noisyfox在https://github.com/symphoniacloud/lambda-monitoring/issues/4上的评论