すべてのログパスに書き換えを挿入するのではなく、メッセージの一部を完全に書き換える方法はありますか?

すべてのログパスに書き換えを挿入するのではなく、メッセージの一部を完全に書き換える方法はありますか?

メッセージ内で\ 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。

関連情報