有没有办法全局重写消息的部分内容,而不是在所有日志路径上插入重写?

有没有办法全局重写消息的部分内容,而不是在所有日志路径上插入重写?

我需要从消息中转义 \n 。我可以使用“ rewrite”来执行此操作,但问题是我有很多日志路径,并且我不想rewrite在所有日志路径上指定“”。是否有设置重写的全局方法?

# Escape the new line characters
rewrite r_escape_new_line {subst("\n", "#012", value("MSG"), flags("global"));};
log { source(s_system); filter(f_critical); rewrite(r_escape_new_line); destination(d_critical); };
log { source(s_system); filter(f_error); rewrite(r_escape_new_line); destination(d_error); };
log { source(s_system); filter(f_warning); rewrite(r_escape_new_line); destination(d_warning); };

答案1

尝试将 flags(no-multi-line) 选项添加到源定义中,例如:

source s_src {
   system(flags(no-multi-line));
   internal();

};

如果这不起作用,那么您可以使用通道将重写嵌入到源定义中。这syslog-ng 管理员指南有一个类似的例子,你只需要用重写来替换解析器。

HTH。

相关内容