SYSLOG.CONF(5)

名称
syslog.conf - syslogd(8) 設定ファイル

解説
syslog.conf ファイルは syslogd(8) プログラムの設定ファイルです。 このファイルは program 指定によって分けられた行ブロックから構成されています。 それぞれの行は 2つのフィールドを含みます。 その行が適用されるメッセージのタイプと優先度を指定する selector フィールドと、 syslogd が選んだ基準とマッチしたマッチしたメッセージを受けとった場合の動作を指定する action フィールドです。 selector フィールドと action フィールドは 1 つ以上のタブ文字で区切られています。

selector 機能は、 facility とピリオド (“”). とオプションの比較フラグ ([<=>]) そして level で符合化され、間に空白は含みません。 facility と level の双方とも、大文字小文字の違いはありません。

facility はシステムが発するメッセージの一部を表し、次にあげるキーワード群の 1 つで表されます : auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, ntp, syslog, user, uucp と local0 から local7。 これらのキーワード(markを除く)は openlog(3) と syslog(3) ライブラリルーチンで指定される “LOG_” で始まる値と一致します。 比較フラグ を使用して、何を記録するのかを正確に指定できます。 比較フラグのデフォルト組は “=>” (またはあなたが好むのなら “>= ”) であり、 指定した facility リストからの level 以上のレベルのメッセージを記録することを意味します。

level はメッセージの重要度を表し、以下のキーワードの順に高から低になります: emerg, alert, crit, err, warning, notice, info, debug。 これらのキーワードは syslog(3) ライブラリルーチンで指定される “LOG_” で始まる値と一致します。

それぞれの行ブロックはタグによって前のブロックと区別されます。 タグは行の先頭が #!prog または !prog (前者は以前の syslogd との互換性のためのものです。 例えば syslog.conf ファイルを共有したい時などに便利です) で始まり、それぞれのブロックは syslog を呼び出す特定のプログラムと 関連付けられています。 また、タグ ``foo'' は、 ``foo: '' というプレフィックスを持つ カーネルログメッセージにもマッチします。

facility と level の両方のキーワードとその意味のより詳細な説明を知りたい場合は syslog(3) を見てください。 選択は facility で行なう方が program で行なうよりも好まれています。 なぜなら、後者はネットワーク環境の中では 簡単に変化してしまう場合があるからです。しかし、適切な facility が本当に存在しない場合もあります。

もし facility 指定に一致したメッセージを受けとり、なおかつそれが 指定した level (もしくはそれ以上の level) だった場合、またはメッセージ中の日付の後ろの最初の単語が program と一致した場合、 action フィールドで指定された動作が選択されます。

複数の selector を、セミコロン (“”); によって区切ることにより、1 つの action に対して指定することができます。 しかしそれぞれの selector はその前にある指定を上書き修正できてしまいますので注意してください。

複数の facility は、コンマ (“”), によって区切ることにより 1 つの level を指定することができます。

アスタリスク (“*”) は、全ての facility 、全ての levels 、または全ての programs を指定するのに使用できます。

特別な facility である “mark” は、20分毎に “info” の優先度を持つメッセージを受け取ります ( syslogd(8) を参照 )。これは アスタリスクを含む facility フィールドには適用されません。

特別な level である “none” は、特定の facility を無効にします。

それぞれの行の action フィールドは、 selector フィールドに指定されたメッセージを受け取った際の動作を指定します。 動作指定には次の 5つの形式があります:

•   パス名 (先頭がスラッシュで始まります)。 該当するメッセージは、そのファイルに追加されます。

•   ホスト名 ( (“@”) 文字から始まる必要があります)。 該当するメッセージは、指定されたホストの syslogd プログラムに転送されます。

•   コンマで区切られたユーザのリスト。 該当するメッセージは、指定されたユーザがログインしていれば、 そのユーザの画面に出力されます。

•   1 つのアスタリスク。 該当するメッセージは、ログイン中の全てのユーザの画面に出力されます。

•   垂直バー (“|”) とそれに続くコマンド。該当したメッセージをパイプを使って コマンドに渡すことができます。 このコマンドは、 /bin/sh によって評価されるので、通常のシェルメタキャラクタや入力/出力 リダイレクトを利用できます。 (しかし実行されたコマンドからの stdio(3) バッファされた出力のリダイレクトは余計な遅延を引き起こしたり、 あるいはシグナルによってロギング中のサブプロセスが終了した場合など 出力データを失うことがあるかもしれないことに注意してください) コマンドそれ自身は stdout と stderr を /dev/null にリダイレクトして動作します。 SIGHUP を受け取ると、 syslog.conf はそのプロセスとのパイプを閉じます。もしそのプロセスが自発的に終了しない 場合は、60秒の猶予期間の後 SIGTERM を送ります。

    コマンドはパイプでつながれるデータが到着した際に 1 度だけ起動されます。 その後、コマンドが終了した場合には必要に応じて再起動されます。 そのため、1行の入力だけをサブプロセスが手に入れるよう望んでいるなら、 (もし多くのメッセージが速く流れる場合には、 資源を大量に消費する可能性がありますが) 1行の入力があった後に終了する事によって達成する事ができます。 必要ならば、この効果のためにラッパスクリプトを書くこともできます。

    そのコマンドが完全なパイプラインでない場合、コマンドを exec で起動すると、起動したシェルプロセスがコマンドの完了を待たなくなるので 便利かもしれません。 警告: このプロセスは syslogd(8) の UID のもとで動きます。通常はスーパユーザです。

空行と最初の空白でない文字がハッシュ (“#”) 文字である行は無視されます。

使用例

設定ファイルは次のようになります:

    # err レベル以上の全てのメッセージ、全てのレベルの kernel メッセージ、
    # notice レベルの auth メッセージをコンソールに出力します。
    # プライベートな認証メッセージは記録をとりません!
    *.err;kern.*;auth.notice;authpriv.none	/dev/console
    # info 以上のレベルを持つ(mail を除く)全てのメッセージを記録します。
    # プライベートな認証メッセージは記録をとりません!
    *.info;mail.none;authpriv.none		/var/log/messages
    # debug レベルのみの daemon メッセージを記録します
    daemon.=debug						/var/log/daemon.debug
    # authpriv ファイルはアクセス制限を持ちます。
    authpriv.*						/var/log/secure
    # 全てのレベルの mail メッセージを一箇所にまとめて記録します。
    mail.*							/var/log/maillog
    # emerg(非常事態)レベルの全てのメッセージは全員が受け取ります。
    *.emerg							*
    *.emerg							@arpa.berkeley.edu
    # alert レベル以上のメッセージを root と eric の画面に表示されます。
    *.alert                                                 root,eric
    # err レベル以上の mail と news の エラーを特別なファイルに保存します。
    mail;news.err						/var/log/spoolerr
    # 全てのレベルの認証メッセージをフィルタにパイプします。
    auth.*					|exec /usr/local/sbin/authfilter
    # ftpd のトランザクションを mail と news にあわせて保存します。
    !ftpd
    *.*							/var/log/spoolerr
    # カーネルのファイヤウォールレポートを別のファイルに保存します。
    !ipfw
    *.*							/var/log/ipfw

関連ファイル
/etc/syslog.conf
    syslogd(8) 設定ファイル

バグ
複数のセレクタ指定は、時々思ったように効果を発揮しない事があります。 例えば、 “mail.crit,*.err” と設定すると、 “mail” ファシリティのメッセージのレベルは “err” かそれ以上となり、 “crit” かそれ以上のレベルにはなりません。

ネットワーク環境においては、全てのオペレーティングシステムが 同じ facility 名のセットを実装しているわけではない点に注意してください。 authpriv, cron, ftp, ntp といったこの実装において知られた facility が、 目的のシステムには存在しないかもしれません。更に悪い事に、 DEC UNIX は AdvFS ファイルシステムのログイベントに facility 番号 10 (この実装では authpriv です) を使っています。

関連項目
syslog(3), syslogd(8)