syslog.conf - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表
名前
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) がいくつかのバグ
フィックスと新しい機能の追加をした。