カーネルや各種サーバープログラムの出力するシスログメッセージには、ファシリティ(メッセージの種類)とプライオリティ(重要度)と呼ばれる値が設定されています。ファシリティはメッセージの種類を意味し、プライオリティはメッセージの重要度を意味します。syslogd デーモンの設定ファイルである /etc/syslog.conf には、どのファシリティで、どのプライオリティを持つメッセージをどこに出力するか、といった設定を以下の書式で記述します。
SELECTORS ACTIONS |
SELECTORS と ACTIONS はスペースで区切ります。SELECTORS には、ファシリティ (facility)とプライオリティ(priority)を以下のように .(ピリオド)で接続して指定します。ACTIONS には、ログの出力先を指定します。
facility.priority |
SELECTORS を複数指定したい場合は以下のように ;(セミコロン)で接続して指定することができます。
facility.priority [;facility.priority ...] |
syslogd は、受け取ったシスログメッセージのファシリティとプライオリティを参照し、/etc/syslog.conf ファイルの SELECTORS と ACTIONS に記述されている設定に従いログを処理します。
![]() | /etc/syslog.conf の内容を編集した場合は、変更を反映するために syslogd の再起動が必要です。
|
SELECTORS で指定可能なファシリティとプライオリティには以下があります。
表 28-2. ファシリティの種類
| auth | 認証やセキュリティに関するメッセージ(login、su など) |
| authpriv | 認証やセキュリティに関するメッセージ(auth と同様の種類に属しますが出力は異なります) |
| cron | cron や at のログ |
| deamon | 特定のファシリティを持たない各種デーモンプログラム(named など) |
| kern | カーネルメッセージ |
| lpr | プリンタデーモンのログ(cupsd) |
| メールサービスのログ(postfix、sendmail) | |
| news | NEWS サービスのログ |
| syslog | syslogd のログ |
| user | ユーザープログラムのログ |
| uucp | uucp 転送を行うプログラムのログ |
| local0〜local7 | 任意のプログラムで利用 |
| * | すべてのログ |
複数のファシリティを指定したい場合は、以下のように ,(カンマ)で続けて指定できます。
deamon,auth.warning |
この例では、ファシリティが deamon あるいは auth で、プライオリティが warning 以上のメッセージとなります。プライオリティについては以降で解説します。
なお、ファシリティは通常、プログラムの作成者によって決定されていますが、OpenSSH や xinetd のように設定ファイルでファシリティを変更できるプログラムも存在します。例えば、OpenSSH のデーモン sshd が出力するシスログメッセージのファシリティは /etc/ssh/sshd_config ファイルの以下の行で指定できます。
# Logging #obsoletes QuietMode and FascistLogging #SyslogFacility AUTH #LogLevel INFO |
SyslogFacility がファシリティの指定です LogLevel は sshd デーモン自体が出力するログのプライオリティを指定するためのものです。sshd のファシリティはデフォルトで AUTH に設定されています。変更した場合には、先頭のコメントを外して、sshd を再起動します。
xinetd の場合は、/etc/xinetd.conf でファシリティの指定が可能です。
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
} |
デフォルトでは、authpriv が設定されています。authpriv を他のファシリティに変更して xinetd を再起動すれば、xinetd のシスログメッセージは変更したファシリティで出力されます。
表 28-3. プライオリティの種類
| emerg | 非常に危険な状態 |
| alert | システム破損などの緊急事態発生 |
| crit | ハードウェアの傷害などの危険状態 |
| err | 一般的なエラーメッセージ |
| warning | 警告メッセージ |
| notice | 通知メッセージ |
| info | 一般的な情報 |
| debug | デバッグメッセージ |
| none | 出力しない |
| * | すべてのメッセージ |
通常、syslogd は指定したプライオリティ以上のログを出力します。例えば、以下のように指定すれば、ファシリティが mail で、warning より高いプライオリティ(err、crit、alert、emerg)のメッセージとなります。
mail.warning |
逆に、低いプライオリティのメッセージを出力するには、以下のようにプライオリティの直前に ! を指定します。
mail.!warning |
特定のプライオリティのみ指定するには =(イコール)を指定します。以下の例は、ファシリティが mail で、プライオリティが warning のメッセージとなります。
mail.=warning |
また、=(イコール)の前に ! を指定した場合は、そのプライオリティ以外のメッセージとなります。例えば、以下のように指定すれば、ファシリティが mail で、プライオリティが warning 以外のメッセージとなります。
mail.!=warning |
ACTIONS には、SELECTORS で指定したメッセージをどこに出力するのかを決定します。出力先としては以下を指定できます。
ログの出力先をローカルファイルに指定するには、ファイル名をフルパスで指定します。例えば、以下のように指定すれば、ファシリティが mail のすべてのメッセージは、/var/log/messages に出力されます。
mail.* /var/log/maillog |
![]() | Turbolinux 10 Server では、指定したファイルが存在しない場合には自動的に作成されますので、事前に用意する必要はありません。 |
以下のように @ をホスト名、あるいは IP アドレスの前に指定すると、指定したホスト(この例では、syslogserver)へメッセージを転送することができます。転送したメッセージを受け取る側のホストでの設定も必要です。メッセージの転送については、項28.4 で解説します。
mail.* @syslogserver |
ユーザー名を指定すると、そのユーザーのコンソールにメッセージを出力することができます。例えば、以下のように指定すると、root と admin ユーザーのコンソールにプライオリティ emerg 以上のログを出力します。
*.emerg root,admin |
また、* を指定すると、すべてのユーザーのコンソールに出力されます。以下のように指定すれば、システムの異常を全ユーザーに通知することもできます。
*.emerg * |
/dev/console を指定すると、現在使用しているコンソールにログを出力します。
auth.warning /dev/console |
|(パイプ)を使用して任意のプログラムにメッセージの内容を渡すことができます。以下のように指定すれば、ファシリティが auth でプライオリティ warning 以上のメッセージが /usr/local/bin/program に渡されます。ログを管理者宛にメールで通知するプログラムの作成などに使用できます。
auth.warning |/usr/local/bin/program |
上記の解説を踏まえて Turbolinux 10 Server の /etc/syslog.conf の内容を確認してみます。ファイル中のコメントは消去しています。
*.info;mail.none;news.none;authpriv.none /var/log/messages authpriv.* /var/log/secure mail.* /var/log/maillog *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log news.=crit /var/log/news/news.crit news.=err /var/log/news/news.err news.notice /var/log/news/news.notice |
1 行目から順に以下の設定がデフォルトで記述されています。
ファシリティが mail、news、authpriv 以外で、プライオリティが info 以上のログを /var/log/messages に出力
ファシリティが authpriv のすべてのログを /var/log/secure に出力
ファシリティが mail のすべてのログを /var/log/maillog に出力
プライオリティが emerg のすべてのログを全ユーザーのコンソールに出力
ファシリティが uucp、news でプライオリティが crit 以上のログを /var/log/spooler に出力
ファシリティが local7 のすべてのログを /var/log/boot.log に出力
ファシリティが news でプライオリティが crit のログを /var/log/news/news.crit に出力
ファシリティが news でプライオリティが err のログを /var/log/news/news.err に出力
ファシリティが news でプライオリティが notice 以上のログを /var/log/news/news.notice に出力