如何在Logstash中使用gsub为message字段添加正确换行符?
解决Logstash中mutate添加换行时出现转义的问题
这问题我之前也碰到过!Logstash的mutate过滤器在处理转义字符的时候确实有点“别扭”,你遇到的就是典型的配置字符串转义规则导致的问题。
为什么原来的写法会得到\\n?
当你在mutate的update配置里写"%{message} \n"时,Logstash的配置解析器会把\n当成字面量的反斜杠加n,而不是换行符,所以最终输出里就出现了\\n(显示为转义后的形式)。
两种可行的解决方法
方法一:用Ruby过滤器直接处理
Ruby过滤器的代码块遵循纯Ruby语法,\n会被正确识别为换行符,不会被额外转义:
ruby { code => "event.set('message', event.get('message') + '\n')" }
这种方法最直观,也不容易出错。
方法二:使用Unicode转义序列
Logstash的配置支持Unicode转义,换行符的Unicode编码是\u000a,用它代替\n就能得到实际的换行:
mutate { update => {"message" => "%{message} \u000a"} }
这样配置解析器会把\u000a转换成真正的换行符,而不是字面量字符。
你可以根据自己的偏好选其中一种,测试后应该就能得到你想要的"2017-12-31 Error \n"结果啦。
内容的提问来源于stack exchange,提问作者S'chn T'gai Spock
相关产品推荐
相关产品推荐

