ルールは selector フィールドと action フィールドの二つのフィールドで構成する。これらの二つのフィールドは 一つ以上の空白文字か TAB 文字で区切られる。selector フィールドは指定さ れた action を適用する facility と priority のパターンを規定する。
シャープ記号(``#'')で始まる行と空行は無視する。
このバージョンの syslogd は拡張された文法を認識することができる。 行の末尾にバックスラッシュ(``\'')を置くことによって、 ひとつのルールを複数行に分けることができる。
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 のみ無視する。
マイナス記号 ``-'' を接頭すると、記録の際のファイルシステムバッファの フラッシュ動作を抑制する。これを用いると、書き込み動作の直後にシステム に障害が発生した場合、情報を失なう可能性があることに注意すること。しか しながらこの機能は特に騒々しくロギングするプログラムを動作させる際のい くらかの性能改善には役に立つ。
この機能を用いると、他の全てのコンピュータにリモートに記録させることで、 すべての syslog メッセージを一台のホストで制御することができる。これは 管理上の困難を解消する。
# 危機的状況を /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 メッセージを一台 のコンピュータに保存するのに役に立つ。
オリジナルの BSD の syslogd では selector フィールドと action フィールドの区切りの文字として空白文字を利用することはできない(TAB 文 字でなければならない)。