Linux でのデーモン ロギング



そのため、Linux システムで実行しているデーモンがあり、そのアクティビティの記録、つまりログを取得したいと考えています。問題は、これを達成するための「最良の」方法は何ですか?


私の最初のアイデアは、単純にファイルを開いて書き込むことです。


FILE* log = fopen("logfile.log", "w");
/* daemon works...needs to write to log */
fprintf(log, "foo%s\n", (char*)bar);
/* ...all done, close the file */
fclose(log);

この方法でログを記録することには、本質的に何か問題がありますか? Linux に組み込まれたフレームワークなど、より良い方法はありますか?


答え:


Unix には長い間、syslog と呼ばれる特別なログ フレームワークがありました。シェルを入力してください


man 3 syslog

C インターフェースのヘルプが表示されます。


いくつかの例


#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
int main(void) {
openlog("slog", LOG_PID|LOG_CONS, LOG_USER);
syslog(LOG_INFO, "A different kind of Hello world ... ");
closelog();
return 0;
}