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とプライオリティ

実際はログ、メッセージと格闘する