Ich fürchte, ich habe das logging -Modul noch immer nicht so ganz verstanden.
Derzeit mache ich das so:
Ich habe eine Moduldatei namens setup_logger.py, die einen logger namens 'mainlogger' mit verschiedenen Handlern erstellt( EMail, Datei und sylog; ist wharscheinlich ein bisschen übertrieben).
In der Haupt-Moduldatei - nennen wir sie main.py - wird zuoberst (ausserhalb main() mit 'from setup_logger import mainlogger' ausgeführt. Damit funktioniert mein logging
In anderen Modul-Dateien wird das gleiche gemacht. Somit funktioniert das logging wie gewünscht auch in den aufgerufenen Funktionen.
Nun habe ich noch 2 Klassendateien, in denen Klassen definiert werden, die in mehreren anderen Projekten einegesetzt werden (sollen). Auch dort mache ich ein 'from setup_logger import mainlogger'
Das würde aber voraussetzen, dass in allen Projekten eine setup_logger.py existiert - oder ?
Wie macht man sowas mehr generisch. Zusammengefasst sollen alle logging-EInträge eines Projektes in einen logger und dessen Handler gehen.
logging in Klassen oder (Untermodulen) ...
- __blackjack__
- User
- Beiträge: 14237
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@drnicolas: Logging für das gesamte Programm konfiguriert man nur im Hauptmodul oder von dort aus, also wenn man das in einem anderen Modul macht, dann wird das vom Hauptmodul importiert. Wenn man da in jedem Modul was machen oder importieren muss, ist irgendwas komisch bis falsch.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
@drnicolas: Beim logging gibt es zwei Ebenen. Auf der einen Seite sind die log-Handler, die definieren, wie und wo etwas ausgegeben wird. Das konfigurierst du einmal in main, indem Du z.B. setup_loghandlers() aus Deinem setup_logger.py aufrufst.
Auf der anderen Seite gibt es logger, die typischerweise für jedes Modul erzeugt werden und Meldungen in das logsystem geben.
Am Anfang von Modulen findet man oft
Auf der anderen Seite gibt es logger, die typischerweise für jedes Modul erzeugt werden und Meldungen in das logsystem geben.
Am Anfang von Modulen findet man oft
Code: Alles auswählen
import logging
logger = logging.getLogger(__name__)
