Logging Praxis?
-
Ist mir letztens aufgefallen, das in einer Bibliothek das Logging in etwas so gemacht wurde:
void foo() { log("Rufe api_foo in foo auf."); api_foo(); }
Wir hingegen machen es in unseren Projekten eher so:
void api_foo() { log("api_foo läuft."); }
D.h. der Ansatz ist ein anderer: wir lassen loggen. Wohingegen die erste Variante selber loggen muß. Mir ist jetzt so der Gedanke gekommen, das die erste Variante gar nicht so doof ist. Weil man dadurch doch besser verfolgen kann, was die aufrufende Funktion von api_foo ist.
Wie handhabt ihr das? Oder kombiniert ihr sogar beide Varianten?
-
was die aufrufende Funktion von api_foo ist
Normalerweise hat die aufrufende Funktion auch ein log am Funktionsanfang. Dadurch laesst sie sich sehr leicht ermitteln.
-
Ich mache das seit Olims Zeiten mit einer Textdatei, in die ich nach Bedarf selbst hineinschreibe. Etwa so:
log << "--> main" << endl; log << "--> function x" << endl; log << "... parameter a " << a << endl; log << "... parameter b " << b << endl; ... log << "... returnwert " << r << endl; log << "--> function x exit" << endl; log << "--> main exit" << endl;
Rufe ich Standardfunktionen oder API-Funktionen auf, so logge ich die Rückgabewerte. Nicht weiter benötigte logs werden auskommentiert. In der Releaseversion wird die Datei schlicht gelöscht. Mag sein, dass dies vielen zu aufwendig erscheint. Für mich ist es sehr effizient.
-
Warum loggt ihr jeden Funktionsaufruf? Wird das nicht nur ein riesiger unübersichtlicher Haufen an Messages?
-
Warum loggt ihr jeden Funktionsaufruf?
Vielleicht weil sie nach Lines of Code bezahlt werden?!
-
loc-counter schrieb:
Warum loggt ihr jeden Funktionsaufruf?
Vielleicht weil sie nach Lines of Code bezahlt werden?!
Op Hamburgisch: Dösspaddels, Dödelkram mokt wi nu gar nich!!!
-
Oh ist das erbärmlich.
Schaut euch mal die Writer Monade in Haskell an.
So macht man es elegant. Verklemmte C++ Programmierer.
-
Der untershied zwischen
tell
undlog
ist gleich ... ?