FreeBSDでアプリケーション毎にsyslogのログファイルを分ける方法

FreeBSD限定ですが、アプリケーション毎に syslog の出力を設定する書き方があります。
# ちなみに、環境は FreeBSD 6.3

参考:
http://www.itmedia.co.jp/enterprise/0309/08/epn18_3.html


次のような書き方をします。

!sshd

 *.*    /var/log/sshd.log

こう書くと、sshd から出力されるsyslogのメッセージは、 /var/log/sshd.log に出力されます。



ちなみに、某ルータからのsyslog転送では、

Apr 15 12:00:00 router 192.168.100.1 Apr 15 12:00:00 security ****メッセージ****
                      ~~~~~~~~~~~~~

こんなログが記録されます。
下線部がアプリケーション名の位置です。
このルータからは、アプリケーションの名前が、IP(192.168.100.1)で送られてきています。(もしくは、IPで記録しているのか?)
なので、syslog.conf に

!192.168.100.1
 *.*     /var/log/router.log

と書くことで記録できました。

syslog転送を受ける場合、設定をホスト毎にわけれるといい気がするんですが。。。
man には hostname がどうとかかいてあるのに、設定例が書いてないので諦めました。
今回は、上の方法で満足できたので。

追記: !プログラム名 の代わりに #+hostname でホスト名がかけそうです・・・が、確認してません。


あと、syslog.confを設定したときの注意点ですが、syslogd を再起動する前に、

$ touch /var/log/router.log 

のようにして、ファイルを作っておいてあげないと、書き込んでくれませんでした。
これで1時間ほどハマりました。
常識なのかもしれませんが。。。


syslogdの再起動は、

/etc/rc.d/syslogd reload

でOkです。