プログラムfoobar
からのログメッセージをログレベルerr
でrsyslogdのファイル/var/log/foobar.log
に保存したい。どうやってやるの?
これは、プログラム名でメッセージをフィルタリングする方法です。
:programname,contains,"foobar" /var/log/foobar.log
これは、ログレベルでメッセージをフィルタリングする方法です。
*.err /var/log/foobar.log
しかし、これらの両方のフィルターで同時にフィルター処理する方法がわかりません。
rsyslogd wikiのこの例 は、あなたが望むようなことをする方法を提案しています。 式ベースの構文を使用したプログラム名によるフィルタリングの部分です。
Wikiで提供されている例を使用する:
if $programname == 'foobar' and $syslogseverity-text == 'error' then /var/log/foobar.log
それをrsyslogd.confまたはrsyslog.d内のスニペットとして配置します
その簡単な方法は... if($ program contains "foobar")and($ severity contains "err")then /var/log/foobar.log
もちろん、他にもたくさんの方法がありますが、上記は非常に簡単だと思います。