SYSLOG
Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
closelog, openlog, syslog, vsyslog - システムロガーにメッセージを送る
書式
#include <syslog.h>
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
#include <stdarg.h>
void vsyslog(int priority, const char *format, va_list ap);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
vsyslog():
_BSD_SOURCE
説明
closelog()
はシステムのログ記録用プログラム(システムロガー
syslogd(8))
ヘの接続を終了する。
closelog()
は必須ではない。
openlog()
はログを出力しようとしているプログラムからログ記録用プログラムへの
接続を開始する。
ident
で指定した文字列(通常は
openlog()
したプログラムの名前)はログ出力の一文一文に追加され、どのプログラム
が出力したログかを識別するために使われる。
option
引き数は、
openlog()
の動作とその後の
syslog()
の呼び出しを制御するフラグを指定する。
facility
引き数は、後で
syslog()
を呼び出す際に facility が指定されなかった場合に使用される
デフォルト値を決定する。
option
と
facility
については後述する。
openlog()
は必須ではなく、必要に応じて
syslog()
から呼び出される。
syslog()
が呼び出した場合、
ident
のデフォルト値は NULL になる。
syslog()
はログメッセージを出力し、
syslogd(8)
がそのメッセージを記録する。
priority
引き数は
facility
と
level
との組合せで指定する。
facility
と
level
の取りうる値は後述する。
残りの
format
引き数は
printf(3)
と似たスタイルの書式とその書式に与える値である。
format
中の2文字
%m
はその時点での
errno
に関連するエラーメッセージ文字列
(strerror)
によって置き換えられる。
必要な場合は末尾に改行が加えられる。
vsyslog()
関数は
syslog()
と同じ機能を持つが、可変引き数リストを指定することができる点が異なる。
指定された引き数は、
stdarg(3)
可変引き数リストマクロを用いて取得される。
以下のサブセクションでは、
option
と
facility
と
priority
の値を設定するのに使用されるパラメータを説明する。
option
下記の値を OR したものが
openlog()
の
option
引き数になる:
- LOG_CONS
-
エラーがあれば、システムロガーに送る一方でシステムコンソールにも直接書く。
- LOG_NDELAY
-
ログ記録用プログラムとの接続を即座に開始する
(通常は、最初のメッセージが記録される時に接続を開く)。
- LOG_NOWAIT
-
メッセージを記録する際に生成される子プロセスの終了を待たない。
(GNU C ライブラリは子プロセスを生成しない。
したがって、このオプションは Linux では無効である。)
- LOG_ODELAY
-
LOG_NDELAY
の反対。
syslog()
が呼ばれるまで、接続の開始を行わない。
(このオプションはデフォルトであり、特に指定する必要はない。)
- LOG_PERROR
-
stderr にも出力する。(POSIX.1-2001 では定義されていない)
- LOG_PID
-
個々のメッセージに PID を含める。
facility
facility
引き数はメッセージに記録されるプログラムのタイプを指定するために使われる。
これによって異なるタイプのプログラムからのメッセージは異なる扱いを
するように設定ファイル(
syslog.conf(5))
に定義できる。
- LOG_AUTH
-
セキュリティ/認証 メッセージ
(非推奨。代わりに
LOG_AUTHPRIV
を使用すること)
- LOG_AUTHPRIV
-
セキュリティ/認証 メッセージ (プライベート)
- LOG_CRON
-
クロックデーモン
(cron
と
at)
- LOG_DAEMON
-
特定の facility 値を持たないシステムデーモン
- LOG_FTP
-
ftp デーモン
- LOG_KERN
-
カーネルメッセージ
- LOG_LOCAL0 から LOG_LOCAL7
-
ローカルな使用のためにリザーブされている
- LOG_LPR
-
ラインプリンタ・サブシステム
- LOG_MAIL
-
メール・サブシステム
- LOG_NEWS
-
USENET ニュース・サブシステム
- LOG_SYSLOG
-
syslogd(8)
によって内部的に発行されるメッセージ
- LOG_USER (デフォルト)
-
一般的なユーザレベルメッセージ
- LOG_UUCP
-
UUCPサブシステム
level
これはメッセージの優先度を指定する。
優先度の高いものから低いものの順で下記する。
- LOG_EMERG
-
システムが使用不可
- LOG_ALERT
-
直ちに行動を起こさなければならない
- LOG_CRIT
-
危険な状態
- LOG_ERR
-
エラーの状態
- LOG_WARNING
-
ワーニングの状態
- LOG_NOTICE
-
通常だが重要な状態
- LOG_INFO
-
インフォメーションメッセージ
- LOG_DEBUG
-
デバッグレベルのメッセージ
setlogmask(3)
関数を使用して、
指定されたレベルのメッセージだけを記録するように
制限することができる。
準拠
openlog(),
closelog(),
syslog()
は SUSv2 と POSIX.1-2001 で規定されている
(但し
vsyslog()
は除く)。
POSIX.1-2001 では
facility
として
LOG_USER
と
LOG_LOCAL*
の値が規定されているだけである。
しかしながら、
LOG_AUTHPRIV
と
LOG_FTP
という例外はあるが、
それ以外の
facility
の値は多くの Unix システムで使われている。
option
の値の
LOG_PERROR
の値は、 POSIX.1-2001 では規定されていないが、
Unix の多くのバージョンで使用可能である。
注意
openlog()
呼び出しの
ident
引き数は、値がそのまま保持されていることを前提にしている。
それゆえ、
ident
で指定された文字列が変更されると、
syslog()
は変更された文字列の追加するだろうし、
指定された文字列が存在しなくなった場合、結果は未定義である。
最も移植性がある方法は、文字列定数を使用することである。
ユーザーから与えられたデータを format として渡してはならない。
代わりに以下を使うこと。
syslog(priority, "%s", string);
関連項目
logger(1),
setlogmask(3),
syslog.conf(5),
syslogd(8)
Index
- 名前
-
- 書式
-
- 説明
-
- option
-
- facility
-
- level
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:07 GMT, November 19, 2007