ユーザー ID ごとに異なるファイルを使用するようにログをフィルター処理すると、次のように各 uid のルールを作成できます。
if $msg contains 'uid=500' then /var/log/uid/500
if $msg contains 'uid=501' then /var/log/uid/501
if $msg contains 'uid=502' then /var/log/uid/502
次のように正規表現キャプチャを使用して1行を作成したいと思います。
if $msg contains 'uid=\([0-9]+\)' then /var/log/uid/\1
できますか?
ベストアンサー1
あなたはそれを使用することができます不動産代替品。あなたrsyslog.conf
または同様の行を目的のファイル名形式のテンプレートとして定義し、入力行を一致させるときに操作に使用します。例えば、
$template myfile,"/var/log/uid/%msg:R,ERE,1,FIELD:.*?uid=([0-9]+).*--end%"
if (re_match($msg, "uid=[0-9]+")) then {
action(type="omfile" dynaFile="myfile")
stop
}
テンプレート表現テンプレート変数myfile
は、正規表現(R)一致、拡張(ERE)、グループキャプチャ1(1)msg
(または一致するものがない場合は元のフィールドを保持)に置き換えられた属性を含む文字列です。実際の正規表現はこの.*?uid=([0-9]+).*
部分です。これは--end
シーケンスの必須部分です%...:R,...--end%
。
以下の行は、一致させる行と結果が配置される場所の一般的なRainerスクリプトテストです。