2011年1月26日(水) 21:20
ログ出力に初めて 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
-