tail head cat sleep
QR code linking to this page

manページ  — SYSLOG

名称

syslog, vsyslog, openlog, closelog, setlogmask – システムログの制御

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <syslog.h>
#include <varargs.h>

void
syslog(int priority, const char *message, ...);

void
vsyslog(int priority, const char *message, va_list args);

void
openlog(const char *ident, int logopt, int facility);

void
closelog(void);

int
setlogmask(int maskpri);

解説

syslog() 関数は、システムのメッセージロガーにメッセージを書込みます。 そのメッセージは、次に状況に応じてシステムコンソール、ログファイル、 ログインしたユーザなどに書込まれたり、他のマシンに転送されます ( syslogd(8) 参照) 。

メッセージは、 ‘%m’ が現在のエラーメッセージにより置き換えられることを除けば、 printf(3) フォーマットストリングと同じものになります (グローバル変数 errno によって示されるものと同じ。 strerror(3) 参照) 。 何もない場合は、末尾に改行が追加されます。

vsyslog() 関数は、 stdarg(3) の可変長引数機能を使ってすでに引数が キャプチャされている場合の代替形式です。

メッセージには優先順位 ( priority ) のタグが付けられます。優先順位は、 facility level にコード化されます。 facility は、メッセージを作成する システムの一部を記述します。 level は、順番になった (高い方から低い方へ) 次のような一覧から選択します:
LOG_EMERG パニック状態。これは、通常は全ユーザに送信されます。
LOG_ALERT 壊れたシステムデータベースのような、直ちに是正すべき状態。
LOG_CRIT 危険な状態、例えばハードデバイスエラーなど。
LOG_ERR エラー。
LOG_WARNING 警告メッセージ。
LOG_NOTICE エラー状態ではないが、特別に処理する必要性が考えられる状態。
LOG_INFO インフォメーションメッセージ。
LOG_DEBUG 通常はプログラムのデバッグの際にのみ使う情報が入った メッセージ。

openlog() 関数は、 syslog() および vsyslog() により送られたメッセージに 対して、より特殊な処理を施すためのものです。パラメータ ident は、すべての メッセージの前に付加されるストリングです。 logopt 引数は、ログ作成オプション を指定するビットフィールドで、次に示す値の 1 つ以上を OR 操作することによって作成されます:
LOG_CONS syslog() がメッセージを syslogd(8) へ渡せない場合、 コンソール (" /dev/console") にメッセージを書き込むことを試みます。
LOG_NDELAY syslogd(8) への接続を直ちに開きます。通常は、最初の メッセージがログに書込まれるまでは開く操作を遅らせます。これは、 ファイル記述子を割り振る順番を管理する必要があるプログラムでは役に 立ちます。
LOG_PERROR メッセージを、システムログと同時に標準エラー出力にも書込みます。
LOG_PID 各メッセージとともにプロセス ID をログします。デーモンのインスタンス化を識別するために役に立ちます。

facility パラメータは、明示的なファシリティが コード化されていないすべてのメッセージに割り当てるデフォルトファシリティを コード化します:
LOG_AUTH 権限付与システム: login(1)su(1)getty(8) 、など。
LOG_AUTHPRIV
  LOG_AUTH と同じですが、限定された個人だけが読める ファイルにログします。
LOG_CONSOLE カーネルコンソール出力ドライバが、メッセージを /dev/console に書き込みます。
LOG_CRON cron デーモン: cron(8)
LOG_DAEMON routed(8) のような、他のファシリティでは明示的に 用意されていないシステムデーモン。
LOG_FTP ファイル転送プロトコルデーモン: ftpd(8)tftpd(8)
LOG_KERN カーネルにより生成されるメッセージ。これらは、どんな ユーザプロセスによっても生成できません。
LOG_LPR ラインプリンターのスプーリングシステム: lpr(1)lpc(8)lpd(8) 、など。
LOG_MAIL メールシステム。
LOG_NEWS ネットワークニュースシステム。
LOG_SECURITY
  セキュリティサブシステムです。 例えば ipfw(4) です。
LOG_SYSLOG syslogd(8) により内部的に生成されたメッセージ。
LOG_USER 任意のユーザプロセスにより生成されたメッセージ。何も 指定されていない場合は、これはデフォルトのファシリティ識別子になります。
LOG_UUCP uucp システム。
LOG_LOCAL0 ローカルの使用のために予約。 LOG_LOCAL1 から LOG_LOCAL7 までについても同じ。

closelog() 関数は、ログファイルを閉じるために使うことができます。

setlogmask() 関数は、ログ優先順位マスクを maskpri に設定し、以前のマスクを返します。 maskpri に設定されていない優先順位を持った syslog() への呼び出しは拒絶されます。個別の優先順位 pri のためのマスクは、マクロ LOG_MASK(pri) によって計算されます。 toppri 自体を含む toppri までのすべての優先順位についてのマスクは、マクロ LOG_UPTO(toppri) によって与えられます。 デフォルトでは、すべての優先順位をログすることを許可します。

戻り値

ルーチン closelog()openlog()syslog() 、および vsyslog() は、値を返しません。

ルーチン setlogmask() は、常に前のログマスクレベルを返します。

syslog(LOG_ALERT, "who: internal error 23");

openlog("ftpd", LOG_PID | LOG_NDELAY, LOG_FTP);

setlogmask(LOG_UPTO(LOG_ERR));

syslog(LOG_INFO, "Connection from host %d", CallingHost);

syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");

関連項目

logger(1), syslogd(8)

歴史

これらの関数は BSD 4.2 に現れました。

SYSLOG (3) June 4, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

The most horrifying thing about Unix is that, no matter how many times you hit yourself over the head with it, you never quite manage to lose consciousness. It just goes on and on.
— Patrick Sobalvarro