Effiziente Möglichkeit der Einstellung der Protokollierung über ein Paket-Modul

Habe ich ein Paket mit mehreren Komponenten, die in es wäre von großem nutzen, verwenden der Protokollierung und der Ausgabe nützliche Informationen.

Was ich nicht wollen, zu tun ist, um "setup" die richtige Protokollierung für jede einzelne Datei mit irgendwo entlang dieser Linien:

import logging
logging.basicConfig(level=DEBUG)
my_function = logging.getLogger("my_function")
my_class = logging.getLogger("my_class")

Ich habe versucht, ein paar Ansätze, einer davon ist das hinzufügen der boilerplate-code in eine Klasse innerhalb eines Dienstprogramm-Modul und versuchen, so etwas wie dieses:

from util import setlogging
set_logging()

Aber auch die oben genannte Lösung nicht sauber Aussehen zu mir und würde Probleme verursachen, weil setLogger nicht __call__ Methode. Was ich gemacht habe, gefallen hat, war, dass mein "set_logging" - Klasse Lesen würde bilden eine config-Datei und einige default-Werte, so wäre es nicht egal, welches level oder welche Art von logging-format, das ich wollte, es würden stellen Sie es richtig.

Gibt es eine Möglichkeit zu initialisieren ordnungsgemäße Protokollierung über das board in mein Paket? Vielleicht in der __init__.py - Datei?

Und nur so ausführlich wie möglich, das ist, was setlogging (jetzt eine Funktion, nicht die Klasse) sieht wie folgt aus:

def setlogging(config=None):
    if config == None:
        config = config_options() # sets default values
    levels = {
        'debug': DEBUG,
       'info': INFO
        }

    level = levels.get(config['log_level'])
    log_format = config['log_format']
    datefmt = config['log_datefmt']

    basicConfig(
        level   = level,
        format  = log_format,
        datefmt = datefmt)
InformationsquelleAutor alfredodeza | 2010-07-28
Schreibe einen Kommentar