[Python-de] Fragge zu logging

Heiko Gerlach heikogerlach at gmail.com
Fr Jul 20 08:49:25 UTC 2007


Hallo,

On 7/20/07, Bastian Venthur <venthur at debian.org> wrote:
>
> Hi Liste,
>
> ich hab hier ein komisches Problem mit loggern. Um es zu demonstrieren
> hier ein minimales Beispiel:
>
> === main.py ===
>
> import logging
> import module1
>
> if __name__ == "__main__":
>     logging.basicConfig(level=logging.DEBUG, format="%(name)-12s
> %(levelname)-8s %(message)s")
>     logger = logging.getLogger()
>     logger.info("Logger initialized")
>
>     module1.foo()
>
> === module1.py ===
>
> import logging
>
> logger = logging.getLogger("module1")
> logger.debug("Logger initialized")
>
> def foo():
>     logger.debug("Entered foo()")
>
> === Ausgabe von python main.py ===
> root         INFO     Logger initialized
> module1      DEBUG    Entered foo()
>
>
> Meine Frage: Warum wurde logger.debug("Logger initialized") in
> module1.py nicht ausgeführt? Ein print an der Stelle würde etwas ausgeben.


Es wird ausgeführt! Allerdings zum Zeitpunkt des imports in main.py, also
bevor in main.py logging.basicConfig() ausgeführt wird. Wenn ich mal raten
soll, dann würde ich sagen, daß der Default-Logging-Level höher als DEBUG
ist und deshalb das logging.debug("Logger initialized") in module1.py stumm
bleibt. wenn Du "debug" in "error" änderst, also den Logging-Level
hochsetzt, bekommst Du eine Fehlermeldung, wohl weil der Logger (noch) nicht
konfiguriert ist.

Wenn Du logging.basicConfig() in main.py direkt nach den "import logging"
und noch vor "import module1" setzt, dann ist auch alles konfiguriert und
die Ausgabe erscheint wie erwartet.

Gruß, Heiko
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://python.net/pipermail/python-de/attachments/20070720/24fadf41/attachment.htm