私はrsyslogd v5.8.10を含むCentOS6.5を使用しています。
私のサーバーには20のプロセスプログラムがあります。 rsyslogdを使用してログを受信し、メッセージのプロセスプログラムIDに基づいて別のログファイルに保存したいので、次の形式でログを送信することにしました。 {PRC}例:{PRC server1_process_a10}これはメッセージの内容です。
メッセージがフィルタ/ルール(regexを使用?)と一致することを確認してから、ログファイル名にprocess_name、log_levelを使用する方法を知りたいです。
例:ログメッセージは次のとおりです(ログレベルのデバッグ):{PRC server1_process_a10}this_is_message_textこのメッセージを/var/log/myprogram-server1_process_a10_debug.logに保存しようとしています。
答え1
ついに問題を解決しました。
最初のステップは、次のプログラムを介してログテキストを送信することです。
sender_host sender_program ログ_テキスト
次に、/etc/rsyslog.conf に次の設定を追加します。
$template tpl,"/var/log/procs_%プログラム名:R,ERE,0,ZERO:(PRCS_[A-Za-z0-9]+)--end%%syslogseverity-text%%$年%-%$月%-%$日%.log"
local0.*?tpl
そうすれば、すべてがうまくいくでしょう。