sourCEntral - mobile manpages

pdf

SYSLOG

名前

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);

void vsyslog(int priority, const char *format, va_list ap);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

vsyslog():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE

説明

openlog()
openlog
() は、プログラム用のシステムロガー (system logger) への接続をオープンする。

ident で指定した文字列は各メッセージの前に付与される。通常は ident にはプログラム名が設定される。 ident が NULL の場合、プログラムが ident として使用される (POSIX.1-2008 では ident が NULL の場合の動作は規定されていない)。

option 引数は、 openlog() の動作とその後の syslog() の呼び出しを制御するフラグを指定する。 facility 引数は、後で syslog() を呼び出す際に facility が指定されなかった場合に使用される デフォルト値を決定する。 optionfacility に指定できる値については後述する。

openlog() は必須ではなく、必要に応じて syslog() から呼び出される。 syslog() が呼び出した場合、 ident のデフォルト値は NULL になる。

syslog() と vsyslog()
syslog
() generates a log message, which will be distributed by syslogd(8).

The priority argument is formed by ORing together a facility value and a level value (described below). If no facility value is ORed into priority, then the default value set by openlog() is used, or, if there was no preceding openlog() call, a default of LOG_USER is employed.

The remaining arguments are a format, as in printf(3), and any arguments required by the format, except that the two-character sequence %m will be replaced by the error message string strerror(errno). The format string need not include a terminating newline character.

vsyslog() 関数は syslog() と同じ機能を持つが、可変引数リストを指定することができる点が異なる。 指定された引数は、 stdarg(3) 可変引数リストマクロを用いて取得される。

closelog()
closelog
() は、システムロガーに書き込むのに使用されるファイルディスクリプターをクローズする。 closelog() の使用は必須ではない。

Values for option
The option argument to openlog() is a bit mask constructed by ORing together any of the following values:

LOG_CONS

エラーがあれば、システムロガーに送る一方でシステムコンソールにも直接書く。

LOG_NDELAY

Open the connection immediately (normally, the connection is opened when the first message is logged). This may be useful, for example, if a subsequent chroot(2) would make the pathname used internally by the logging facility unreachable.

LOG_NOWAIT

メッセージを記録する際に生成される子プロセスの終了を待たない。 (GNU C ライブラリは子プロセスを生成しない。 したがって、このオプションは Linux では無効である。)

LOG_ODELAY

LOG_NDELAY の反対。 syslog() が呼ばれるまで、接続の開始を行わない。 (このオプションはデフォルトであり、特に指定する必要はない。)

LOG_PERROR

メッセージを stderr にも出力する。 (POSIX.1-2001 にも POSIX.1-2008 にも定義されていない)

LOG_PID

個々のメッセージに呼び出し元の PID を含める。

Values for facility
facility
引数はメッセージに記録されるプログラムのタイプを指定するために使われる。 これによって異なるタイプのプログラムからのメッセージは異なる扱いを するように設定ファイル( syslog.conf(5)) に定義できる。

LOG_AUTH

セキュリティ/認証 メッセージ

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サブシステム

Values for level
これはメッセージの優先度を指定する。 優先度の高いものから低いものの順で下記する。

LOG_EMERG

システムが使用不可

LOG_ALERT

直ちに行動を起こさなければならない

LOG_CRIT

危険な状態

LOG_ERR

エラーの状態

LOG_WARNING

ワーニングの状態

LOG_NOTICE

通常だが重要な状態

LOG_INFO

インフォメーションメッセージ

LOG_DEBUG

デバッグレベルのメッセージ

setlogmask(3) 関数を使用して、 指定されたレベルのメッセージだけを記録するように 制限することができる。

属性

この節で使用されている用語の説明については、 attributes(7) を参照。

img

準拠

openlog(), closelog(), syslog() は SUSv2, POSIX.1-2001, POSIX.1-2008 で規定されている (但し vsyslog() は除く)。

POSIX.1-2001 では facility として LOG_USERLOG_LOCAL* の値が規定されているだけである。 しかしながら、 LOG_AUTHPRIVLOG_FTP という例外はあるが、 それ以外の facility の値は多くの UNIX システムで使われている。

option の値の LOG_PERROR の値は、 POSIX.1-2001 と POSIX.1-2008 では規定されていないが、 UNIX の多くのバージョンで使用可能である。

注意

openlog() 呼び出しの ident 引数は、値がそのまま保持されていることを前提にしている。 それゆえ、 ident で指定された文字列が変更されると、 syslog() は変更された文字列の追加するだろうし、 指定された文字列が存在しなくなった場合、結果は未定義である。 最も移植性がある方法は、文字列定数を使用することである。

ユーザーから与えられたデータを format として渡してはならない。 代わりに以下を使うこと。

syslog(priority, "%s", string);

関連項目

journalctl(1), logger(1), setlogmask(3), syslog.conf(5), syslogd(8)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

pdf