syslogの使い方
今回はログに関する機能を作成します。プログラム実行時のエラーの解析や、サーバのアクセス管理等に用いるために、ログまっとうなプログラムには必須の機能です。
ログの作成の仕方として、fprintf関数で書き込み先のファイルを指定する方法や、vsyslogを利用するものもありますが、今回は基本的なsyslogを用いてみます。
#include <stdarg.h> void vsyslog(int priority, const char *ftm, va_list ap);
ソースコード(最もシンプルな場合)
#include <stdio.h> #include <syslog.h> int main(){ syslog(LOG_INFO,"test"); return 0; }
/var/log/messagesに以下のように出力されました。
実行したファイル名(a.out)と、syslogの第二引数(test)が出力されます。
Feb 13 00:01:17 pide-VirtualBox a.out: test
ソースコード(openlogとcloselogを用いた場合)
openlogとcloselogを組み合わせることで、細かいログの指定ができるようになります。
#include <stdio.h> #include <syslog.h> int main(){ openlog("testsyslog", LOG_PERROR|LOG_PID,LOG_USER); syslog(LOG_INFO,"test"); closelog(); return 0; }
/var/log/syslogに以下のように出力されました。
Feb 13 00:22:49 pide-VirtualBox testsyslog[2902]: test
openlogは、main関数内で一度呼ばれればよい。
main関数内で呼び出される別ファイル上でも認識される。
syslog.hをutils.hのヘッダフィルにいれる。
facilityとプライオリティ
実際はログ、メッセージと格闘する