2017-11-25 1 views
0

Nach den Dokumenten und eine Tonne SO Antworten und dergleichen, "alles, was Sie tun müssen", um Logging über mehrere Module zu tun ist, setzen Sie den Logger in Ihrer Hauptdatei und dann logger = logging.getLogger(__name__) .Logging-Level nicht auf andere Module

Aber das ist nicht wahr. Wenn Sie das tun, wird die Protokollierungsstufe nicht übertragen, so dass Sie eine zusätzliche Zeile in jeder Datei benötigen, die Sie haben logger.setLevel(...). Einfaches Beispiel:

test.py

import logging 
from test2 import bla 

logging.basicConfig() 
logger = logging.getLogger(__name__) 
logger.setLevel(logging.INFO) 

def main(): 
    logger.info('main info') 
    bla() 

main() 

test2.py

import logging 

logger = logging.getLogger(__name__) 

def bla(): 
    logger.info('info') 
    logger.debug('debug') 

Wenn ich laufen test.py, nichts von test2.py wird gedruckt.

Gibt es noch etwas, was man in der ersten Einrichtung tun muss, die ich vermisse?

Antwort

1

Der Grund, warum nichts gedruckt wird, ist, dass Sie nicht die Stufe des Root-Loggers festgelegt haben, so dass es standardmäßig WARNING ist. Wenn Sie mit ersetzen, dann sollten Sie INFO und DEBUG Nachrichten von test2.py erhalten.

Verwandte Themen