SYSLOG.CONF(5)

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

説明
syslog.conf は UNIX ライクなシステムでそのシステムメッセージを記録する syslogd(8) のための設定ファイルである。このファイルは記録のルールを規定する。固有の 機能については sysklogd(8) の man ページを参照すること。 ルールは selector フィールドと action フィールドの二つのフィールドで構成する。これらの二つのフィールドは 一つ以上の空白文字か TAB 文字で区切られる。selector フィールドは指定さ れた action を適用する facility と priority のパターンを規定する。 シャープ記号(``#'')で始まる行と空行は無視する。 このバージョンの syslogd は拡張された文法を認識することができる。 行の末尾にバックスラッシュ(``\'')を置くことによって、 ひとつのルールを複数行に分けることができる。

SELECTORS
selector フィールドはさらにピリオド(``.'')で区切られる facility と priority の二つの部分で構成する。 どちらの部分も文字の大文字小文字は区別しない。また、数字を用いることも 可能であるが、これは使用しない方がよい。使用した時には警告がなされる。 facility と priority については syslog(3) に記述されている。以下に記述する各種の名前は /usr/include/syslog.h における LOG_-values の同じ名前のものに対応する。 facility は次のキーワードのいずれかである: auth、 authpriv、 cron、 daemon、 kern、 lpr、 mail、 mark、 news、 security (auth と同じ)、 syslog、 user、 uucp、 local0からlocal7。 このうち security は今後は利用するべきでなく、また、 mark は内部利用のためのものなので、アプリケーションレベルで用いるべきではない。 ただし利用できないわけではない。 facility はメッセージを生成するサブシステムを規定する、すなわち(例えば)全てのメ イルプログラムは syslog を用いてログを記録する場合は mail facility (LOG_MAIL) を用いる。 priority は以下のキーワードのいずれかである(昇順): debug, info, notice, warning, warn ( warning と同じ), err, error (err と同じ), crit, alert, emerg, panic (emergと同じ). このうちキーワード error、warn、panic については、同等のものがあるので今後は利用するべきでない。 priority はメッセージの重要性を定義する。 オリジナルの BSD システムの syslogd の動作は、指示された priority とそれ よりも順位の高い全てのメッセージが与えられた action に沿って記録される、 というものである。この syslogd(8) もそれと同じ動作であるが、いくつかの拡張機能も有する。 上述の名前に加え、 syslogd(8) は以下の拡張についても理解する: アスタリスク(``*'')は、 それが用いられている場所 (すなわちピリオドの前か後ろか) に応じて、 全ての facility かまたは全ての priority を表わす。 キーワード none は、それが与えられた facility についてはどの priority も 指定しないことを意味する (つまり除外される)。 コンマ(``,'')を用いて、同じ priority を示す一文のなかに複数の facility を指定することが可能である。facility の個数に制限はない。ただしこのよ うな記述が可能なのは facility についてのみで、 priority についてのその ような記述は無視するので注意すること。 セミコロン(``;'')を区切りに用いて複数の selector について同一の action を指定することができる。 selector フィールドの selector は先行するものを上書きしてしまうことに注意するこ と。この動作を用いて特定の priority を除外することも可能である。 この syslogd(8) はオリジナルの BSD のソースを拡張する構文を持っていて、より直観的な利 用を可能にしている。イコール記号(``='')を priority に接頭すると、その priority のもののみを記録するようにすることができる。エクスクラメーショ ンマーク(``!'')を接頭するとその priority とそれよりも高い priority の もののすべてを無視させることができる(イコール記号とエクスクラメーショ ンマークの両方を同時に指定することは可能である)。この拡張の両方を同時 に用いる場合、イコール記号の前にエクスクラメーションマークを置くことで その priority のみ無視する。

ACTIONS
ルールの action フィールドには ``logfile'' を指示する。``logfile'' は 実存するファイルでなくてもかまわない。 syslogd(8) は以下の動作を用意している。

  通常のファイル
メッセージはそのファイルに記録される。ファイル名は ``/'' で始まるフル パスで指定すること。 マイナス記号 ``-'' を接頭すると、記録の際のファイルシステムバッファの フラッシュ動作を抑制する。これを用いると、書き込み動作の直後にシステム に障害が発生した場合、情報を失なう可能性があることに注意すること。しか しながらこの機能は特に騒々しくロギングするプログラムを動作させる際のい くらかの性能改善には役に立つ。

  名前付きパイプ
この syslogd(8) は名前付きパイプ(FIFO)への出力機能を備えている。 ファイル名の先頭にパイプ記号 (``|'') を書くと、 メッセージの出力先をその名前の FIFO にできる。 これはデバッグ作業に役立つ。FIFO は syslogd(8) のスタートに先立ち、 mkfifo(1) コマンドにより生成される必要があることに注意すること。

  ターミナルとコンソール
ファイルとして tty を指示した場合は、tty 用の処理がなされる。 /dev/console も同じ。

  リモートコンピュータ
この syslogd(8) は完全なリモートロギング機能も提供する。すなわちメッセージを syslogd(8) の動作するリモートのホストに送信することができ、またリモートのホストか らのメッセージを受信することもできる。リモートのホストはメッセージをそ れ以上他のホストへ転送することはせず、その機械にローカルに記録するはずだ。 他のホストへメッセージを送信するにはアットマーク(``@'')をそのホスト名 に接頭する。 この機能を用いると、他の全てのコンピュータにリモートに記録させることで、 すべての syslog メッセージを一台のホストで制御することができる。これは 管理上の困難を解消する。

  ユーザ名のリスト
通常、特に重要なメッセージはそのコンピュータの ``root'' にも宛てられる ものである。login しているときにメッセージを受けとるべきユーザのリスト を指示することができる。コンマ(``,'')で区切って複数のユーザを指定する こともできる。メイルで送ろうと思ってはいけない。それでは手遅れになって しまうかもしれない。

  ログインしている誰でも
システムになにか具合が悪いことが発生することを通知するために、緊急のメッ セージはしばしばその時オンラインになっている全てのユーザに通知される。 この wall(1)的機能 を利用するためにはアスタリスク(``*'')を用いる。

例
ここに実在する site の実際の設定例の一部を用いたいくつかの設定例を挙げ る。うまくいけば、たぶん、これで設定上の疑問はすべて解消できると思うが、 なにかあったら筆者( Joey )宛てに連絡いただきたい。

    # 危機的状況を /var/adm/critical に保存する。
    #
    *.=crit;kern.none            /var/adm/critical

priority が crit の、カーネルメッセージを除くすべてのメッセージをファイル /var/adm/critical に保存する。

    # カーネルメッセージは /var/adm/kernel に
    # 保存し、さらに critical 以上の重要度の
    # メッセージは他のホストへ配信しコンソー
    # ルにも表示する。
    #
    kern.*                       /var/adm/kernel
    kern.crit                    @finlandia
    kern.crit                    /dev/console
    kern.info;kern.!err          /var/adm/kernel-info

一番目のルールにより、facility が kern のメッセージはファイル /var/adm/kernel に記録される。 二番目の文により、 priority が crit かそれよりも高い全てのメッセージはリモートのホスト finlandia へ送信さ れる。これは、ホストの障害が生じて保存されたメッセージを読みだすことが できなくなるような回復不能エラーがディスク装置に発生した際に有効である。 リモートのホストに残されたメッセージで障害の原因調査に取り掛ることもで きる。 三番目のルールはそのコンピュータで作業している誰かがそのメッセージを得 ることができるように、実際のコンソールに表示する。 四行目は、syslogd にpriorityが info から warning のカーネルメッセージをファイル /var/adm/kernel-info に保存するよう指示する。 err よりも高い priority を持つものは除外される。

    # tcp wrapper は mail.info でロギングする、
    # すべての接続を tty12 に表示する。
    #
    mail.=info                   /dev/tty12

この例は mail.info (ソースコード上では LOG_MAIL | LOG_INFO) を用いる全てのメッセージを 第 12 コンソール /dev/tty12 に表示する。例えば tcpwrapper tcpd(8) はこの設定を既定値として用いている。

    # メイル関係は一つのファイルへ保存する。
    #
    mail.*;mail.!=info           /var/adm/mail

このパターンは facility が mail の全てのメッセージから priority が info であるものを除くことを示す。これらのメッセージはファイル /var/adm/mail に記録する。

    # mail.info と news.info を /var/adm/info ヘ記録する。
    #
    mail,news.=info              /var/adm/info

この例は mail.info と news.info の両方の全てのメッセージを抜き出し、ファイル /var/adm/info に保存する。

    # info と notice は /var/log/messages へ記録する。
    #
    *.=info;*.=notice;\
    	mail.none  /var/log/messages

この例は syslogd に
 facility が mail であるのものを除く他の 全て info と notice の両方の priority の全てのメッセージをファイル /var/log/messages に保存するよう指示する。

    # info メッセージは /var/log/messages へ記録する。
    #
    *.=info;\
    	mail,news.none       /var/log/messages

この指示により syslogd は priority info の全てのメッセージをファイル /var/log/messages に記録する。ただし facility が mail と news の両方のメッセージは保存しない。

    # 緊急メッセージを wall で表示する。
    #
    *.=emerg                     *

このルールは syslogd に全ての緊急のメッセージをその時ログインしている全てのユーザに伝えるよ う指示する。これが wall action である。

    # priority が alert のメッセージは管理担当へ
    # 送る。
    *.alert                      root,joey

このルールは priority が alert かそれよりも高い全てのメッセージを操作者、すなわちユーザ名 ``root'' と ``joey'' がログインしていればその端末に表示する。

    *.*                          @finlandia

このルールは全てのメッセージを finlandia と呼ばれるリモートのホストに 転送する。これは特に一群のコンピュータの全ての syslog メッセージを一台 のコンピュータに保存するのに役に立つ。

設定ファイル文法の相違点
syslogd の設定は オリジナルの BSD ソースによるものとは少し異なる文法を使用する。 元々は、指示された priority とそれよりも高い priority の全てのメッセージが ログファイルに記録されていた。この syslogd には、より柔軟で直観的にわかりやすい設定が可能となるように修飾子 ``=''、 ``!''、``-''が追加されている。 オリジナルの BSD の syslogd では selector フィールドと action フィールドの区切りの文字として空白文字を利用することはできない(TAB 文 字でなければならない)。

ファイル
/etc/syslog.conf
    syslogd の設定ファイル

バグ
複数の selector を指示するとしばしば直観的でなくなる。例えば、 ``mail.crit,*.err'' は facility が ``mail'' のメッセージのうち ``crit'' より 高い priority 、ではなくて``err'' よりも高い priority を指示していることに なる。

関連項目
sysklogd(8), klogd(8), logger(1), syslog(2), syslog(3)

著者
syslogd は Greg Wettstein (greg@wind.enjellic.com) が BSD のソースコードから Linux で動作するように移植し、Matin Schulze (joey@linux.de) がいくつかのバグ フィックスと新しい機能の追加をした。