ich habe ein Projekt mit ~30.000 Zeilen Python Code und bin mit meinem bisherigen Logging Ansatz sehr unzufrieden.
Daher würde mich sehr interessieren, wie es professioneller geht.
Beim Startpunkt meiner Skriptes ist folgender Code:
Code: Alles auswählen
import logging
logger = logging.getLogger(__name__)
logging.basicConfig()
Code: Alles auswählen
import logging
logger = logging.getLogger(__name__)
Daher habe ich mir in meiner Main eine Funktion, die den Modulen explizite Logger eingeschreibt:
Code: Alles auswählen
def getPretteLogger(Loglevel, ....):
newLogger = ...
# apply handlers etc
return newLogger
def registerLogger():
skript1Logger = getPrettyLogger(..)
skript1.registerLogger(skript1Logger)
Die Skripte haben jeweils eine Interface Funktion, um die registrierung der Logger zu ermöglichen:
Code: Alles auswählen
logger = logging.getLogger(__name__)
def registerLogger(skript1Logger):
global logger
logger = skript1Logger
registrieren verhindern.
Wenn ich den Code so ansehe wirkt er für mich wie lieblos dahin gehackt, gibt es hier einen anderen best practice Ansatz
den ich noch nicht kenne?
Ich würde gerne verhindern, dass es eine Eltern Kind beziehung zwischen meinem Einstiegsmodul und den Skripten gibt.
Es wäre zb schön, wenn ich den globalen Logger umschreiben könnte und die einzelnen Skripte beim holen des loggers
automatisch den richtigen Pfad, Loglevel etc bekommen.