Forum: PC-Programmierung printf Format für eine log datei


von Christian (Gast)


Lesenswert?

Hallo.

Mittels folgendem Makro sollen Ausgaben in eine Datei geschrieben 
werden:

#define TRACE(log, ...) fprintf(log, _VA_ARGS_)

TRACE(log,"TIME: %s/%s FUNCTION: %s MESSAGE: text \n",  _DATE_, 
_TIME_, _FUNCTION_);

Die Ausgaben sollten hierbei bündig erfolgen, in etwa so:

TIME: Jul 16 2012/10:47:34 FUNCTION: main           MESSAGE: text
TIME: Jul 16 2012/10:47:34 FUNCTION: function_foo   MESSAGE: text

Nur bekomme ich es nur so hin:

TIME: Jul 16 2012/10:47:34 FUNCTION: main MESSAGE: text
TIME: Jul 16 2012/10:47:34 FUNCTION: function_foo   MESSAGE: text

Wie muss ich die Formatzeichen setzen um zb. MESSAGE bündig schreiben zu 
können.

Danke.

Gruß
Christian

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

%s mit Feldbreitenangabe verwenden, Feldbreiten vorher auszählen.

Oder mit Tabulatoren arbeiten und einen Logdateibetrachter verwenden, 
der die Tabulatoren sinnvoll auswertet.

von Christian (Gast)


Lesenswert?

Die Breiten manuell zu zählen um eine bündige Ausrichtung zu erreichen,
wollte ich vermeiden. Ich hatte eher auf eine Möglichkeit gehofft,
mit der eine automatische Ausrichtung realisiert werden kann.
(z.b. Ausrichtung vom längsten Funktionsnamen aus,...)

Danke.

von Peter II (Gast)


Lesenswert?

Christian schrieb:
> (z.b. Ausrichtung vom längsten Funktionsnamen aus,...)

und woher soll das system den kennen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann solltest Du über ein anderes Logdateiformat nachdenken. CSV mit 
Semikolon* als Separator kann direkt mit Doppelklick in Excel geöffnet 
werden -- und das kann die Spaltenbreiten an den Inhalt anpassen.


*) bei deutschsprachigen Systemen. Bei englischsprachigen Systemen muss 
stattdessen das namensgebende Komma verwendet werden.

von duselbaer (Gast)


Lesenswert?

Schreib's doch einfach so wie's kommt in die Logdatei und bau Dir ein 
paar Skripte (grep, awk, ...), die Dir die Ausgabe so formatieren, wie 
Du sie brauchts.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.