syslog は、様々なログを統一して扱い、記録するためのシステムです。 記録は syslogd デーモンによってなされます(標準では起動しています)。 syslogd の設定は、/etc/syslog.conf で行います。但し、syslogd は、 自分以外にも別のホストにログを送るなどの機能も持っていますが、 ここではローカルに記録を取る場合について述べましょう。
以下は標準の syslog.conf の設定です。
# $FreeBSD: src/etc/syslog.conf,v 1.13.2.2 2001/02/26 09:26:11 phk Exp $ # # Spaces are NOT valid field separators in this file. # Consult the syslog.conf(5) manpage. #*.err;kern.debug;auth.notice;mail.crit /dev/console *.err;*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security mail.info /var/log/maillog lpr.info /var/log/lpd-errs cron.* /var/log/cron *.err root *.notice;news.err root *.alert root *.emerg * |
syslog.conf では、第一フィールドに selector を書き、第二フィールドに
action を書きます。selector は2つの要素を持ち、[facility].[level]
のように、facility と呼ばれるものと、level(priorityとも呼びます)に分かれます。
facility には、auth, authpriv, console, cron, daemon, ftp, kern, lpr,
mail, mark, news, ntp, security, syslog, user, uucp, local0 〜 local7
までの種別があります。一方、level には、emerg, alert, crit, err,
warning, notice, info , debug の種別があります。つまり、
facility とプログラム群が対応し、ログの危険度によって level の違いが
ある訳です。selector に複数を指定すると、一つの action に複数のログ
が書き込まれる事になります(その時の区切りには ; を用います)。
action には、色々なパターンがありますが、ファイルを指定した場合には
ファイルにユーザを指定した場合にはユーザのコンソールに(ログインしている
場合のみ)、* は全てのユーザに対応します。
facility や level をプログラムで指定する際には、LOG_ を頭に
つけて指示します。ですから、そのようなオプションを受け取るプログラムでは、
例えば LOG_LOCAL4 のように指定する訳です。ここで、local0 から
local7 までは、ユーザが選択できるものとして用意された facility です。
さて、先程の ipmon は、facility が local0 で書き込むとありましたが、
現在の設定では local0.* 自体はどこにも書かれません。従って、
level が err, notice でない限り記録には残りません。そこで、
次のように facility local0 を security ログに残しましょう。
security.*;local0.* /var/log/security |
勿論、別のファイルにしても良いでしょうし、ipmon のマニュアルを読んで、 必要な level のみを残すようにしても良いでしょう。