Ich habe einen Daemon in C geschrieben. Ich protokolliere die Ereignisse in einer Protokolldatei, aber jetzt möchte ich Datum und Uhrzeit hinzufügen, während ich ein Ereignis in die Protokolldatei schreibe. Wie kann ich das erreichen?
Aktuelle Protokolldatei: -
%Vor%Ich möchte, dass die Protokolldatei wie folgt aussieht: -
%Vor%Meine Umgebung ist C und Linux.
Sie müssen mit date
und entweder gmtime
oder localtime
ermitteln, um das tatsächliche Datum und die tatsächliche Uhrzeit zu erhalten.
Dann kann strftime
es für Sie formatieren.
Beispielprogramm folgt:
%Vor%Dies gibt aus:
%Vor% Ich bevorzuge die Verwendung von UTC anstelle der lokalen Zeit, da Sie damit Ereignisse von geografisch getrennten Maschinen verknüpfen können, ohne sich um Zeitzonenunterschiede kümmern zu müssen. Mit anderen Worten: Verwenden Sie gmtime
anstatt localtime
, es sei denn, Sie sind sehr sicher, dass Sie keine Zeitzonen überschreiten.
Ich bevorzuge auch das YYYY-MM-DD HH:MM:SS
-Format, da es einfacher ist, als Monatsnamen zu sortieren, was für Extraktions- und Manipulationswerkzeuge unerlässlich ist.
Hinzufügen meiner Log-Funktionen basierend auf der Antwort von @paxdiablo. Verwenden der lokalen Zeit, könnte aber gmt verwenden, indem Sie einfach getFormattedTime ()
änderncommon.h
%Vor%common.c
%Vor%Sie können sie wie folgt verwenden:
%Vor%Was die Ausgabe erzeugt:
%Vor% Um die aktuelle Zeit zu erhalten, können Sie zB time.h
verwenden ...
Sie können auch strftime
verwenden, wie von paxdiablo vorgeschlagen, um mehr Zeit / Datum-Formatierungsmöglichkeiten zu erhalten.
In Ihrem Fall wird das Ergebnis von ctime(&now)
natürlich in Ihren Logarithmus char array / string anstelle von printf
übernommen.