syslog、openlog、closelog、または setlogmask サブルーチン

目的

システム・ログを制御します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <syslog.h>

void openlog ( ID, LogOption, Facility) const char *ID; int LogOption, Facility

void syslog ( 優先順位, , ... ) int 優先順位; const char *Value;

void closelog () (void closelog ())

int setlogmask( MaskPriority) int MaskPriority

void bsdlog (Priority, 値,...) int 優先順位; const char *Value;

説明

重要: マルチスレッド環境では、 syslogopenlogcloselog、または setlogmask サブルーチンを使用しないでください。 syslog_r (syslog_r、openlog_r、closelog_r、または setlogmask_r サブルーチン)、 openlog_rcloselog_rのマルチスレッドの代替を参照してください。 または setlogmask_r サブルーチンの記事を参照してください。 syslog サブルーチンはスレッド・セーフではありません。スレッド・セーフ・プログラムの場合は、代わりに syslog_r サブルーチンを使用する必要があります。

syslog サブルーチンは、 syslogd コマンドによって保守されるシステム・ログにメッセージを書き込みます。

注: syslog に渡される 900 バイトを超えるメッセージは、ログに記録される前に syslogd によって切り捨てられることがあります。

このメッセージは printf fmt 文字列に似ていますが、 %merrno グローバル変数から取得された現在のエラー・メッセージに置き換えられる点が異なります。 必要に応じて、末尾の改行をメッセージに追加することができます。

メッセージは、 syslogd コマンドによって読み取られ、システム・コンソールまたはログ・ファイルに書き込まれるか、該当するホスト上の syslogd コマンドに転送されます。

特殊な処理が必要な場合は、 openlog サブルーチンを使用してログ・ファイルを初期化できます。

メッセージには、それぞれの 優先順位 のタイプを示すコードがタグ付けされます。 優先順位 は、メッセージを生成するシステムの一部を記述する 機能としてエンコードされ、メッセージの重大度を示すレベルとしてエンコードされます。

syslog サブルーチンは、メッセージを syslogd コマンドに渡すことができない場合、メッセージを /dev/console ファイルに書き込みます。 LOG_CONS オプションが設定されている場合。

closelog サブルーチンはログ・ファイルをクローズします。

setlogmask サブルーチンは、 MaskPriority パラメーターのビット・マスクを使用して、新しいログ優先順位マスクを設定し、前のマスクを戻します。

sys/syslog.h ファイル内の LOG_MASK および LOG_UPTO マクロは、優先順位マスクを作成するために使用されます。 特定のレベルのメッセージのロギングを許可しない優先順位マスクを使用して syslog サブルーチンを呼び出すと、サブルーチンはメッセージをログに記録せずに戻ります。

パラメーター

項目 説明
id すべてのメッセージの先頭に付加されるストリングを含みます。 Facility パラメーターは、明示的な機能エンコードを持たないメッセージに割り当てられるように、前のリストのデフォルト機能をエンコードします。
LogOption ロギング・オプションを示すビット・フィールドを指定します。 LogOption の値は、次のとおりです。
LOG_CONS
メッセージを syslogd コマンドに送信できない場合は、メッセージをコンソールに送信します。 このオプションは、制御端末を持たないデーモン・プロセスで役立ちます。
LOG_NDELAY
最初のメッセージがログに記録されたときではなく、即時に syslogd コマンドへの接続を開きます。 このオプションは、ファイル記述子が割り振られる順序を管理する必要があるプログラムの場合に役立ちます。
LOG_NOWAIT
Fork された子を待たずに、メッセージをコンソールに記録します。 このオプションは、 SIGCHLDによる子の終了の通知を使用可能にするプロセスに使用します。それ以外の場合、 syslog サブルーチンは、終了状況が既に収集されている子プロセスを待機して、ブロックすることがあります。
LOG_ODELAY
syslog サブルーチンが呼び出されるまでオープンを遅らせます。
LOG_PID
プロセス ID を各メッセージとともにログに記録します。 このオプションは、デーモンを識別するのに役立ちます。
機能 以下のどの値がメッセージを生成したかを指定します。
「LOG_AUTH」
セキュリティー許可システムを示します。 login コマンド、 su コマンドなどを指定します。
ログ・デーモン
システム・デーモンをログに記録します。
LOG_KERN (LOG_KERN)
カーネルによって生成されたメッセージをログに記録します。 カーネル・プロセスは、 bsdlog ルーチンを使用して syslog メッセージを生成する必要があります。 bsdlog の構文は、 syslogと同じです。 bsdlog メッセージはカーネル・プロセスによってのみ作成でき、 LOG_KERN 優先順位でなければなりません。 syslog サブルーチンは、 LOG_KERN 機能メッセージをログに記録できません。 代わりに、 LOG_USER 機能メッセージをログに記録します。
LOG_LPR (LOG_LPR)
ライン・プリンター・スプーリング・システムをログに記録します。
LOG_LOCAL0 から LOG_LOCAL7
ローカルで使用するために予約されています。
ログ・メール
メール・システムをログに記録します。
ログ・ニュース
ニュース・サブシステムをログに記録します。
ログ UUCP
UUCP サブシステムをログに記録します。
LOG_USER
ユーザー・プロセスによって生成されたメッセージを記録します。 これは、何も指定されていない場合のデフォルトの機能です。
Priority メッセージを生成するシステムの部分を指定し、レベルとしてメッセージの重大度を示します。 重大度のレベルは、以下のリストから選択されます。
LOG_ALERT
即時に訂正する必要がある条件を示します。例えば、データベースの破損などです。
LOG_CRIT
重大な状態 (ハード・デバイス・エラーなど) を示します。
LOG_DEBUG
プログラムのデバッグに役立つ情報を含むメッセージを表示します。
LOG_EMERG
すべてのユーザーに報告されるパニック状態を示します。システムは使用できません。
LOG_ERR
示されたエラー条件。
LOG_INFO
一般情報メッセージを示します。
LOG_NOTICE
特殊な処理を必要とするが、エラー条件を必要としない条件を示します。
LOG_WARNING
警告メッセージをログに記録します。
MaskPriority マスク内のビットによって示されるレベルのロギングを使用可能にします。これらのレベルは、ビットが設定されていない場合は設定され、使用不可になります。 デフォルトのマスクでは、すべての優先順位をログに記録できます。
VALUE Value パラメーターに指定する値を指定し、 printf サブルーチンの Format パラメーターと同じ構文に従います。

  1. セキュリティー・ブリーチの可能性に関するエラー・メッセージをログに記録するには、次のように入力します。
    syslog (LOG_ALERT, "who:internal error 23");
     
  2. ログ・ファイルを初期化し、ログ優先順位マスクを設定し、エラー・メッセージをログに記録するには、次のように入力します。
    openlog ("ftpd", LOG_PID, LOG_DAEMON);
    setlogmask (LOG_UPTO (LOG_ERR));
    syslog (LOG_INFO, ""); 
     
  3. システムからのエラー・メッセージをログに記録するには、次のように入力します。
    syslog (LOG_INFO | LOG_LOCAL2, "foobar error: %m");