この特集のトップページへ
この回のトップページへ

syslog.confにおける書式のルール

 syslog.conf内では,1行に1つのルールを記述するという決まりがある。

<selecor>    <action>

 書式は上記のようになっている。「selector」部には「mail.info」や「kern.*」のように記述し,複数指定する場合にはセミコロン「;」で区切り,「mail.*;news.*」のように指定する。ファシリティにおいては,「mail」や「kern」などの指定のほかに,ワイルドカードを使い「*」としてすべてを指定したり,「!kern」と指定して特定のファシリティ以外のすべてを指定することが可能だ。

 プライオリティを指定する際,そのプライオリティおよびそれよりも高いシステムログすべてが記録される。たとえば,「info」というプライオリティを指定した場合,指定したログファイルには,「info, notice, warning, err, crit, alert, emerg」すべてのファシリティのログが記録される。特定のプライオリティのみを指定したい場合には,「mail.=info」のようにプライオリティの前に「=」を付加することで実現できる。

 さらに,逆に特定のプライオリティ以下を記録したい場合には,プライオリティの前に「!」を付加することもできる。これらの指定を利用した場合,実際に記録されるログのプライオリティは,次の表のようになる。

priority *.warning *.=warning *.!warning *.!=warning
debug    
info    
notice    
warning    
err    
crit    
alert    
emerg    

「action」には記録するログファイルの出力先のパス名を指定する。一般的には,「/var/log/messages」や「/dev/console」だろう。また,syslogはほかのマシンにシステムログを送ることができる。「@loghost」のように指定することで,ネットワーク上の別のホストでシステムログを記録することができる。この場合,ログを受ける側のサーバ上で,システムログを受け入れる設定済みであることが前提だ。

 このほかにも,ログイン中のユーザー端末に出力させることもできる。操作は簡単であり,「action」の項目に送りたいログイン名を指定するだけだ。たとえば,認証関連のログをrootに通知したい場合には,次のように指定すればよい。

auth.*;authpriv.*        root

 また,出力先に「*」を指定すると,現在ログインしているユーザー全員の端末に出力される。この書式に従うと,次のような設定を行うことができる。

# カーネルのログは /var/log/kernel に
kern.*             /var/log/kernel
# 基本的に情報はすべて /var/log/messages へ
*.info             /var/log/messages
# 認証関連情報は他のホストへ飛ばす
auth.*;authpriv.*         @loghost
# 緊急性の高いログはログインしているユーザーにも知らせる
*.emerg              *

PREV 3/6 NEXT