Hast Du das Modul logging importiert?
In meiner main()-Funktion steht dann im Prinzip immer folgender Absatz:
Code: Alles auswählen
def main():
# LOGGING -----------------------------------------------
filename = "C:/.../logs/DATEINAME {}.log".format(datetime.date.today())
handler = logging.FileHandler(filename, "a")
frm = logging.Formatter("%(asctime)s [%(levelname)-8s] [%(funcName)-20s] [%(lineno)-4s] %(message)s", "%d.%m.%Y %H:%M:%S")
handler.setFormatter(frm)
logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
# LOGGING -----------------------------------------------
Du kannst logger.setLevel(logging.DEBUG) auch hochsetzen, so dass nur Meldungen ab einem bestimmten Level angezeigt bzw. geloggt werden. Die Rangfolge erkennst Du aus der nächsten Codebox, DEBUG ist die niedrigste Stufe. Du nutzt das z. B., um den Inhalt von Variablen zu loggen. Mittels Info setze ich z. B. Zwischeninfos ab, z. B. welcher Abschnitt jetzt folgt oder welcher Typ (Klassifizierung) von etwas erkannt wurde.
In der main-Funktion kannst Du dann folgende Meldungen in die Logdatei schreiben lassen:
Code: Alles auswählen
logger.debug("Debug-Meldung")
logger.info("Info-Meldung")
logger.warning("Warnung")
logger.error("Fehler-Meldung")
logger.ciritical("Kritische Fehler-Meldung")
In den anderen Funktionen, Klassen usw. schreibst du stattdessen:
Code: Alles auswählen
logging.debug("Debug-Meldung")
logging.info("Info-Meldung")
logging.warning("Warnung")
logging.error("Fehler-Meldung")
logging.ciritical("Kritische Fehler-Meldung")
In Deiner Logdatei landen auch alle anderen Logging-Meldungen, die ein importiertes Modul z. B. absetzt. Auf Wunsch kannst Du die Logging-Meldungen auch in der Konsole ausgeben lassen, nutze ich aber nie. Ferner gibt es noch logging.exception(), womit du eine geworfene Exception in die Logdatei schreiben kannst, was ich sehr praktisch finde.
Ich fand es praktisch einzelne Log-Meldungen mit einem \n zu beenden, so dass die Logdatei strukturierter erscheint.
Du findest alle Infos ausführlicher hier:
https://docs.python.org/3.4/library/logging.html