SYSLOG.CONF(5) FreeBSD ファイルフォーマットマニュアル SYSLOG.CONF(5)
名称
syslog.conf − syslogd(8) 設定ファイル |
解説
syslog.conf ファイルは syslogd(8) プログラムの設定ファイルです。このファ イルは program と hostname の指定によって分けられた行ブロックから構成され ています (分離は、その行の後の方で生じます)。それぞれの行は 2つのフィール ドを含みます。その行が適用されるメッセージのタイプと優先度を指定する selector フィールドと、 syslogd(8) が選んだ基準とマッチしたメッセージを受 けとった場合の動作を指定する action フィールドです。 selector フィールド と action フィールドは 1 つ以上のタブ文字または空白で区切られています。 区切りに空白を使用すると、 syslog.conf は他の Unix や Unix 的システムと互 換性が無くなってしまうことに注意してください。この機能は、設定を容易にし (例えば syslog.conf にカットアンドペーストできるようにし)、その際発生し得 るミスを避けるため追加されました。しかしながらこの変更は、古いスタイルの syslog.conf (すなわちタブ文字のみ) へのバックワードコンパチビリティを保っ ています。 selector は、 facility とピリオド (‘‘.’’) とオプションの比較フラグ ([ |
!][<=>]) そして level で符号化され、間に空白は含みません。 facility とlevel の双方とも、大文字小文字の区別はありません。 facility はメッセージを生成したのがシステムのどの部分なのかを表します。これは、次にあげるキーワード群の 1 つで表されます : auth, authpriv,console, cron, daemon, ftp, kern, lpr, mail, mark, news, ntp, security,syslog, user, uucp と local0 から local7。これらのキーワード (mark を除く) は openlog(3) と syslog(3) ライブラリルーチンで指定される ‘‘LOG_’’ で始まる値と一致します。 比較フラグを使用して、何を記録するのかを正確に指定できます。デフォルトの比較は ‘‘=>’’ (またはあなたが好むのなら ‘‘>=’’) であり、指定した facilityリストからの level 以上のレベルのメッセージを記録することを意味します。‘‘!’’ で開始する比較フラグは、その論理的意味を反転させます。 ‘‘!=info’’は、info 以外の全レベルを意味し、 ‘‘!notice’’ は ‘‘<notice’’ と同じ意味です。 level はメッセージの重要度を表し、以下のキーワードの順に高から低になります: emerg, alert, crit, err, warning, notice, info, debug。これらのキーワードは syslog(3) ライブラリルーチンで指定される ‘‘LOG_’’ で始まる値と一致します。 それぞれの行ブロックは program か hostname の指定によって前のブロックと区別されます。ブロックは、最新の program 指定および hostname 指定に対応するメッセージのみをログします。よって、 ‘ppp’ を program として選択するブロックに、 hostname ‘dialhost’ からのメッセージを選択するブロックが直後に続くと、第 2 のブロックは、dialhost 上の ppp(8) プログラムからのメッセージのみをログします。 program 指定は、行の先頭が ‘#!prog’ または ‘!prog’ (前者は以前の syslogdとの互換性のためのものです。例えば syslog.conf ファイルを共有したい時などに便利です) で始まり、引き続くブロックは syslog(3) を呼び出す特定のプログラムと関連付けられています。 program 指定 ‘foo’ は、 ‘foo: ’ というプレフィックスを持つカーネルログメッセージにもマッチします。 ‘#!+prog’ または‘!+prog’ の指定は、前述のものと正に同じ動作をします。 ‘#!-prog’ または‘!-prog’ の指定は、指定したプログラム以外からのメッセージにマッチします。複数のプログラムをコンマで区切って列挙可能です。 ‘!prog1,prog2’ はどちらのプログラムからのメッセージにもマッチし、 ‘!-prog1,prog2’ は ‘prog1’ と‘prog2’ 以外からのすべてのメッセージにマッチします。 hostname 指定で ‘#+hostname’ または ‘+hostname’ という書式のものは、これに引き続くブロックを、指定したホスト名からのメッセージに適用させます。また、 hostname 指定で ‘#-hostname’ または ‘-hostname’ という指定のものは、これに引き続くブロックを、指定したホスト名以外からのメッセージに適用させます。ホスト名が ‘@’ として与えられると、ローカルホスト名が使用されます。プログラムの指定と同様、コンマで区切った複数の値をホスト名の指定として使用可能です。 program 指定または hostname 指定は、プログラム名またはホスト名に ‘*’ を指定することによりリセット可能です。 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つの形式があります: • パス名 (先頭がスラッシュで始まります)。該当するメッセージは、そのファイルに追加されます。 カーネルメッセージが適切に書き込まれることを保証するために、カーネルからメッセージを書き込んだ後に syslog.conf は fsync(2) を呼び出します。他のメッセージは明示的に同期書き込みすることはありません。パス名の前にマイナス符号 ‘‘-’’ を付けることで、指定したファイルに対するカーネルメッセージ 1 つごとの同期取りをしなくなります。但し、書き込みの直後にシステムがクラッシュした場合、情報が失われるかもしれないことは留意して下さい。それでも、 ‘‘-’’ オプションの使用はパフォーマンスを改善します。カーネルが大量のメッセージをログする場合はとくにそうです。 • ホスト名 ((‘‘@’’) 文字から始まる必要があります)。該当するメッセージは、指定されたホストの syslogd(8) プログラムに転送されます。 • コンマで区切られたユーザのリスト。該当するメッセージは、指定されたユーザがログインしていれば、そのユーザの画面に出力されます。 • 1 つのアスタリスク。該当するメッセージは、ログイン中の全てのユーザの画面に出力されます。 • 垂直バー (‘‘|’’) とそれに続くコマンド。該当したメッセージをパイプを使ってコマンドに渡すことができます。このコマンドは、 sh(1) によって評価されるので、通常のシェルメタキャラクタや入力/出力リダイレクトを利用できます。 (しかし実行されたコマンドからの stdio(3) バッファされた出力のリダイレクトは余計な遅延を引き起こしたり、あるいはシグナルによってロギング中のサブプロセスが終了した場合など出力データを失うことがあるかもしれないことに注意してください) コマンドそれ自身は stdout とstderr を /dev/null にリダイレクトして動作します。 SIGHUP を受け取ると、 syslogd(8) はそのプロセスとのパイプを閉じます。もしそのプロセスが自発的に終了しない場合は、60 秒の猶予期間の後 SIGTERM を送ります。 コマンドはパイプ経由で送るべきデータが到着した際に 1 度だけ起動されます。その後、コマンドが終了した場合には必要に応じて再起動されます。そのため、1 行の入力だけをサブプロセスに引き渡すことが望ましいのならば、 (もし多くのメッセージが速く流れる場合には、資源を大量に消費する可能性がありますが) 1 行の入力があった後に終了する事によって達成する事ができます。必要ならば、この効果を得るためにラッパスクリプトを書くこともできます。 そのコマンドが完全なパイプラインでない場合、コマンドを exec で起動すると、起動したシェルプロセスがコマンドの完了を待たなくなるので便利かもしれません。警告: このプロセスは syslogd(8) の UID のもとで動きます。通常はスーパユーザです。 空行、および、最初の空白でない文字がハッシュ (‘‘#’’) 文字である行は無視されます。
実装に関する注
‘‘kern’’ ファシリティは、通常、ローカルのカーネルから生成されるメッセージ 用に予約されています。ファシリティ ‘‘kern’’ でログされた他のメッセージ は、通常、ファシリティ ‘‘user’’ に変換されます。この変換は無効化可能で す。詳細は syslogd(8) を参照してください。 |
関連ファイル
/etc/syslog.conf
syslogd(8) 設定ファイル 使用例 |
設定ファイルは次のようになります: # 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
の画面に表示されます。 # err レベル以上の mail と news の エラーを特別なファイルに保存します。 |
uucp,news.crit |
/var/log/spoolerr |
# 全てのレベルの認証メッセージをフィルタにパイプします。 |
auth.* |
|exec /usr/local/sbin/authfilter |
# ftpd のトランザクションを mail と news
にあわせて保存します。 |
*.* |
/var/log/spoolerr |
# セキュリティメッセージを別のファイルに保存します。 |
security.* |
/var/log/security |
# /dev/console への書き込みを別のファイルに保存します。 |
console.* |
/var/log/console.log |
# ipfw
メッセージをすべてのメッセージの後で同期書き込みなしで保存します。 |
*.* |
-/var/log/ipfw |
関連項目
バグ
複数の selector 指定は、時々思ったように効果を発揮しない事があります。例 えば、 ‘‘mail.crit,*.err’’ と設定すると、 ‘‘mail’’ ファシリティのメッセー ジのレベルは ‘‘err’’ かそれ以上となり、 ‘‘crit’’ かそれ以上のレベルにはな りません。 ネットワーク環境においては、全てのオペレーティングシステムが同じ facility 名のセットを実装しているわけではない点に注意してください。 authpriv, cron, ftp, ntp といったこの実装において知られた facility が、目的のシステ ムには存在しないかもしれません。更に悪い事に、 DEC UNIX は AdvFS ファイル システムのログイベントに facility 番号 10 (この実装では authpriv に該当し ます) を使っています。 FreeBSD 10.0 June 9, 1993 FreeBSD 10.0 |