トップ 一覧 ping 検索 ヘルプ RSS ログイン

C ログの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!C ログ
[Programming 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
!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
!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);
 }
----
この本からの覚書。
{{amazon 4797327014}}