Logging

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Hallo zusammen, ich habe mir jetzt im Detail das Kapitel zur logging-Bibliothek bei Michael Weigend angesehen.

Er erklärt die Grundfunktion mit logging.info("..."), aber sagt auch, dass es bei "großen Projekten mit vielen Modulen (...) sinnvoll (sei), mehrere Logger zu verwenden. Ihnen können unterschiedliche Logging-Levels zugeordnet werden."

Er erklärt mir aber nicht genau, wann ich mehrere Logger verwenden soll und welchen Mehrwert es mir bringt? Ich vermute, dass die Einstellung unterschiedlicher Levels alleiniger Mehrwert ist?

Gibt es eine state of the art-Nutzung des Moduls? Ich möchte gerne eine Log-Datei pro Tag, die in einem eigenen logs-Verzeichnis gespeichert ist, wo dann viele Programme eines Projekts reinschreiben sollen. Würdet ihr die Dateien "2014-09-16.txt" oder eher "2014-09-16.log" nennen?

Gibt es eine Empfehlung für den format-string?

"%(asctime)s, %(filename)s, %(levelname)s, %(message)s"

Die 4 Sachen sind die Punkte, die ich später haben möchte. Würdet ihr mehr mitschreiben???

Ich möchte die Log-Datei später als CSV-Datei weiternutzen. Die Frage richtet sich eher auf euer Erfahrungswissen, also Sachen, die ich m. E. nicht direkt nachlesen kann.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

ich würde an deiner Stelle mit der Dokumentation des logging-Moduls anfangen. Ganz oben rechts gibt es weiterführende Links zum Basic Tutorial, zum Advanced Tutorial und zum Cookbook. Da steht viel mehr drin, als wir dir hier erzählen können. Im Prinzip kannst du beim logging-Modul alles nach deinen Wünschen anpassen. An deiner Stelle würde ich die Seiten mal überfliegen, dann lösen sich einige Fragen wahrscheinlich von selbst und du hast einen etwas besseren Eindruck vom Modul.
Das Leben ist wie ein Tennisball.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

OK, damit hat sich die Anfrage erst einmal erledigt. Danke! (Im Moment lese ich 'viel', leider nicht alles zu Python; manchmal, vor allem gerade im Moment sehe ich den Wald nicht mehr ganz...)
BlackJack

@pixewakb: Ich würde für CSV einen eigenen Formatter schreiben, damit das auch wirklich gültiges CSV wird und nicht nur so ähnlich aussieht.

Wenn da viele Programme eines Projekts reinschreiben sollen hast Du auch ein Problem das die sich gegenseitig die Daten kaputtmachen können. Halt die üblichen Probleme wenn man von mehreren Seiten gleichzeitig auf eine Ressource zugreifen will.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich habe noch keine zwei Tools gleichzeitig loggen lassen, aber ich hatte es heute nach Lehrbuch versucht. Bei meiner eigenen Klasse hatte ich es mittels "with open("...","a") as f: ..." umgesetzt, also immer nur anhängen lassen. Mein Eindruck war, dass das Modul ebenfalls "anfügt". Wie können dort Daten zerstört werden? Vielleicht naiv dachte ich an einen Eintrag pro Zeile, so dass ich es später mit einer for line in f-Schleife auswerten und z. B. aufbereiten kann??? Das Gesamtprojekt hat nur einen Entwickler und das wäre ich und es ist privater Natur, d. h. eine Weitergabe der Codebasis wird nicht stattfinden, die Software ist sehr speziell und d. h. auch auf meine sehr konkreten Bedürfnisse zugeschnitten (ohne viel außerhalb nutzbaren Code)...
BlackJack

@pixewakb: Naja wenn mehr als ein Programm gleichzeitig die Datei öffnet und beide gleichzeitig schreiben, dann können die Daten durcheinander geraten. Es kann auch passieren das ein Prozess die Daten des anderen teilweise oder komplett überschreibt.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Übliche Lösung bei so etwas?

Meine Überlegung: Eine Log-Datei pro Tag und Tool, weil es mir auf die eine Datei pro Tag nicht ankäme...
Hintergrund: Ich habe einen zentralen logs-Ordner im Projektverzeichnis, wo aktuell schon Dateien drin liegen. Die einzelnen Tools sollen später mal im Hintergrund laufen und lästige Aufgaben für mich erledigen. Ich würde jetzt denken, dass ich je nach Tool eine eigene Log-Datei anlegen lasse. Ich will später mit einem anderen Tool eh eine html-Ansicht und Datenaggregation erstellen lassen, so dass ich vielleicht einmal pro Woche nur draufschauen muss, ob denn alles OK war und dann bei Problemen mir noch einmal die raw-Dateien vornehmen könnte...
BlackJack

@pixewakb: Übliche Lösungen: Eine Logdatei pro Programm. Oder einen Handler der die Datei lockt. Oder einen Prozess der das Log schreibt, dem die Programme die Logdatensätze schicken. Oder in eine Datenbank loggen.
Antworten