「C ログ」の版間の差分
ナビゲーションに移動
検索に移動
| 1行目: | 1行目: | ||
| − | ==C ログ== | + | ==[[C ログ]]== |
[[Programming C]] | | [[Programming C]] | | ||
*ほとんどの場合、log message は、特別な directory におかれた system fileに記録されます。 | *ほとんどの場合、log message は、特別な directory におかれた system fileに記録されます。 | ||
*directory のある場所は、/usr/adm または /var/log が一般的 | *directory のある場所は、/usr/adm または /var/log が一般的 | ||
| − | *典型的な Linux system の場合。/var/log/message にすべての system messageが、/var/log/mail にはmail systemからのlog messageが、/var/log/debug には debug messageが記録されます。 | + | *典型的な [[Linux]] system の場合。/var/log/message にすべての system messageが、/var/log/mail にはmail systemからのlog messageが、/var/log/debug には debug messageが記録されます。 |
*systemの設定がどうなっているかは、/etc/syslog.conf で確認できます。 | *systemの設定がどうなっているかは、/etc/syslog.conf で確認できます。 | ||
| − | * | + | *[[UNIX]]の仕様では、すべてのprogramから利用可能な、log message 生成 interface として、syslog 関数を使用することができる。 |
====syslog==== | ====syslog==== | ||
#include <syslog.h> | #include <syslog.h> | ||
| 17行目: | 17行目: | ||
!説明 | !説明 | ||
|- | |- | ||
| − | | | + | |LOG_EME[[R]]G |
|緊急事態 | |緊急事態 | ||
|- | |- | ||
| − | | | + | |LOG_ALE[[R]]T |
|priorityの高い問題 | |priorityの高い問題 | ||
|- | |- | ||
| − | | | + | |LOG_C[[R]]IT |
|criticalなerror | |criticalなerror | ||
|- | |- | ||
| − | | | + | |LOG_E[[R]][[R]] |
|error | |error | ||
|- | |- | ||
| − | | | + | |LOG_WA[[R]]NING |
|警告 | |警告 | ||
|- | |- | ||
| 50行目: | 50行目: | ||
int main() | int main() | ||
{ | { | ||
| − | syslog( | + | syslog(LOG_EME[[R]]G|LOG_USE[[R]], "syslog test\n"); |
exit(0); | exit(0); | ||
} | } | ||
| 102行目: | 102行目: | ||
int main() | int main() | ||
{ | { | ||
| − | openlog("log test", LOG_PID, | + | openlog("log test", LOG_PID, LOG_USE[[R]]); |
| − | setlogmask(LOG_MASK( | + | setlogmask(LOG_MASK(LOG_E[[R]][[R]])); |
| − | syslog( | + | syslog(LOG_E[[R]][[R]], "test error message, pid=%d", getpid()); |
| − | syslog( | + | syslog(LOG_WA[[R]]NING, "test warning message, pid=%d", getpid()); |
closelog(); exit(0); | closelog(); exit(0); | ||
} | } | ||
2020年2月16日 (日) 04:22時点における最新版
C ログ
- ほとんどの場合、log message は、特別な directory におかれた system fileに記録されます。
- directory のある場所は、/usr/adm または /var/log が一般的
- 典型的な Linux system の場合。/var/log/message にすべての system messageが、/var/log/mail にはmail systemからのlog messageが、/var/log/debug には debug messageが記録されます。
- systemの設定がどうなっているかは、/etc/syslog.conf で確認できます。
- UNIXの仕様では、すべてのprogramから利用可能な、log message 生成 interface として、syslog 関数を使用することができる。
syslog
#include <syslog.h> void syslog(int priority, const char *message, ...);
- 引数priorityには、prioity level と facility の値との bit 単位の論理和を指定。
- priority level は、log message をどのように扱うか、facility は message の送信元を記録するためのもの。
| priority level | 説明 |
|---|---|
| LOG_EMERG | 緊急事態 |
| LOG_ALERT | priorityの高い問題 |
| LOG_CRIT | criticalなerror |
| LOG_ERR | error |
| LOG_WARNING | 警告 |
| LOG_NOTICE | 注意の必要な状態 |
| LOG_INFO | 情報message |
| LOG_DEBUG | debug message |
- facility の値は syslog.h で定義されている。
- %mを使用すると、現在のerrnoに対応するerror messageが出力される。
#include <syslog.h>
#include <stdlib.h>
int main()
{
syslog(LOG_EMERG|LOG_USER, "syslog test\n");
exit(0);
}
openlog、closelog、setlogmask
#include <syslog.h> void closelog(void); void openlog(const char *ident, int logopt, int facility); int setlogmask(int maskpri);
- openlog関数でlog messageの形式を変更できる。
- ident parameter は、log messageの前に付加する文字列をしてできる。
- facility parameterは、以後のsyslog 呼び出しで使用するdefault値を指定。
- logoptは、以下のparameterの論理和
| logoopt | 説明 |
|---|---|
| LOG_PID | process id を含める |
| LOG_CONS | message を記録できない場合、consoleに出力 |
| LOG_ODELAY | syslogが始めて呼び出された時点でlog facilityをopen |
| LOG_NDELAY | 実際にlogが行われる時点まで待たずに、直ちにlog facilityをopen |
- setlogmaskを使用して、priorityを制御できる。
- logmaskで設定されていないpriorityのsyslog呼び出しは無視される。
- logmaskを作成するには、以下を使用する。
| logmaskの作成 | 説明 |
|---|---|
| LOG_MASK(priority) | 指定したpriorityのみのmask |
| LOG_UPTO(priority) | 指定したpriorityまでのmask |
#include <stdio.h>#include <stdlib.h>
#include <unistd.h>
int main()
{
openlog("log test", LOG_PID, LOG_USER);
setlogmask(LOG_MASK(LOG_ERR));
syslog(LOG_ERR, "test error message, pid=%d", getpid());
syslog(LOG_WARNING, "test warning message, pid=%d", getpid());
closelog(); exit(0);
}
この本からの覚書。
© 2006 矢木浩人