Wenn ich neuen experimentellen Code schreibe, vergesse ich immer die Magie des Protokollierens, also schreibe ich ihn, damit ich ihn kopieren kann.
Es wird angenommen, dass die Situation wie folgt ist.
Schreiben Sie Folgendes in die Datei der Bibliothek. Die Protokollierungsstufe für diese Datei ist auf "logger.setLevel (log.INFO)" festgelegt. (Nützlich, wenn Sie jede Funktion debuggen möchten)
module.py
import logging as log
#Logger-Einstellungen für jede Datei
logger = log.getLogger(__name__)
logger.setLevel(log.INFO) #Ändern Sie die Anzeigeebene für jedes Modul
def func():
logger.info("From module.func()")
logger.info("Key1\tValue")
logger.debug("Dies wird nicht angezeigt")
Schreiben Sie für das Hauptskript, das diese Bibliothek importiert und verwendet, wie folgt. Sie können den Formatierer beliebig definieren. Es ist einfacher, die Protokolldatei später zu verarbeiten, wenn Sie die Nachricht von der vorherigen wie in diesem Beispiel trennen.
** 2020/06/03 Fix: Es scheint, dass die Ebene des anzuzeigenden Protokolls auf der Handlerseite festgelegt werden musste, also habe ich es auf diese Weise behoben. ** ** **
main.py
import logging as log
import module
#Logger-Einstellungen für jede Datei
logger = log.getLogger(__name__)
if __name__=="__main__":
formatter = "[%(asctime)s] %(levelname)s - %(name)s\t%(message)s"
handlers = [log.StreamHandler(), log.FileHandler("logfile")]
for handler in handlers:
handler.setLevel(log.INFO) #Ebene des anzuzeigenden Protokolls
log.basicConfig(
level = log.DEBUG, format = formatter, handlers = handlers
)
#Protokollausgabe
logger.info("Call module.func() from main.")
module.func()
logger.debug("Dies wird angezeigt")
Die folgenden Protokolle werden in die Standardausgabe bzw. in die Datei ausgegeben. Dies ist praktisch, da Sie sehen können, von welcher Datei das Protokoll gesendet wurde.
[2020-05-15 12:39:20,676] INFO - __main__ Call module.func() from main.
[2020-05-15 12:39:20,677] INFO - module From module.func()
[2020-05-15 12:39:20,678] INFO - module Key1 Value
[2020-05-15 12:39:20,680] DEBUG - __main__Dies wird angezeigt