Einführung von Datum und Uhrzeit in der Protokolldatei

7

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.

    
Thangaraj 14.09.2011, 04:37
quelle

4 Antworten

12

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.

    
paxdiablo 14.09.2011, 04:43
quelle
7

Hinzufügen meiner Log-Funktionen basierend auf der Antwort von @paxdiablo. Verwenden der lokalen Zeit, könnte aber gmt verwenden, indem Sie einfach getFormattedTime ()

ändern

common.h

%Vor%

common.c

%Vor%

Sie können sie wie folgt verwenden:

%Vor%

Was die Ausgabe erzeugt:

%Vor%     
inolasco 19.03.2014 17:25
quelle
4

Um die aktuelle Zeit zu erhalten, können Sie zB time.h verwenden ...

%Vor%

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.

    
ocodo 14.09.2011 04:48
quelle
1

Basierend auf der Antwort von @inolasco ist die statische Variable nicht Thread-sicher. stattdessen lokale Variable verwenden.

%Vor%

rufe sie so:

%Vor%

produzieren:

%Vor%     
chen_767 06.09.2017 08:03
quelle

Tags und Links