[Python-de] Fragge zu logging

Bastian Venthur venthur at debian.org
Fr Jul 20 08:07:01 UTC 2007


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.

Das ist nur die minimale Varianbe meines Prolbems. Ich habe in einem
Projekt in jedem Modul auf Modulebene einen Logger (sie heißen alle
"logger"). Manchmal muss auf Modulebene aber außerhalb von Funktionen
etwas geloggt werden, und entweder kommt gar nichts oder z.B. innerhalb
eines try/exept Blockes auf Modulebene auch gerne mal eine Fehlermeldung
"No handlers could be found for logger foo". Innerhalb von Funktionen
dagegen gibt es keine Probleme.

Irgendwie versteh ich das nicht, kann mir jemand auf die Sprünge helfen?


Schöne Grüße,

Bastian

-- 
Bastian Venthur                                      http://venthur.de
Debian Developer                                 venthur at debian org