Sirius -旧ブログ、更新されません-

2011年1月26日(水) 21:20

KURO-RS 用 daemon その7

ログ出力に初めて syslog を使ってみました。意外と簡単で便利です。

ただし、大量のログ出力があると、syslog はシステムを重くしてしまうようです。



syslog の使い方は、syslog.h をインクルードして、openlog() で準備して、syslog() でログの出力をします。最後に、closelog() で閉じますが、closelog() は必須では有りません。



openlog() は三つの引数があります。

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

一つ目がプログラム名、二つ目がオプションで LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_ODELAY, LOG_PERROR, LOG_PID で必要なものを OR でまとめます。三つ目が記録されるプログラムのタイプの指定で、通常は LOG_DAEMON でいいと思います。



syslog() は printf() 形式のフォーマットが使える可変引数の関数です。

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

はじめの引数がプライオリティで、重要度の高い順から LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG のどれかを指定します。



プライオリティを使ってログの出力を抑制するには、setlogmask() を使います。

int setlogmask(int mask);

例えば、LOG_ERR 以上のプライオリティのログだけを出力する場合は、

setlogmask(LOG_UPTO(LOG_ERR));

という風にします。簡単でなかなか便利です。

written by sirius [KURO-RS] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨