Daemon-Protokollierung in Linux
Ich habe also einen Daemon, der auf einem Linux-System läuft, und ich möchte eine Aufzeichnung seiner Aktivitäten haben:ein Protokoll. Die Frage ist, was ist der "beste" Weg, dies zu erreichen?
Meine erste Idee ist, einfach eine Datei zu öffnen und darin zu schreiben.
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);
Ist irgendetwas grundsätzlich falsch daran, auf diese Weise zu loggen? Gibt es einen besseren Weg, z. B. ein in Linux integriertes Framework?
Antworten:
Unix hat seit langem ein spezielles Logging-Framework namens syslog. Geben Sie Ihre Shell
einman 3 syslog
und Sie erhalten die Hilfe für die C-Schnittstelle dazu.
Einige Beispiele
#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;
}