Hallo,
im Moment erstellt mein Python Programm die LOG Datei und befült diese mit Werte, allerdings erst nach Beenden der Anwendung. Ist es möglich, dass dies schon während dessen geschieht?
LOG Datei während dem Durchlauf befüllen
-
- User
- Beiträge: 168
- Registriert: Montag 9. Mai 2016, 09:14
- Wohnort: Berlin
Das musst du doch für dein Programm am besten wissen ob es machbar ist oder nicht.
Wir kennen den Quellcode nicht, wir wissen nicht wie du die Werte ermittelst.
Können die Werte überhaupt währenddessen ermittelt werden?
Wir kennen den Quellcode nicht, wir wissen nicht wie du die Werte ermittelst.
Können die Werte überhaupt währenddessen ermittelt werden?
Hast Du das Modul logging importiert?
In meiner main()-Funktion steht dann im Prinzip immer folgender Absatz:
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:
In den anderen Funktionen, Klassen usw. schreibst du stattdessen:
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
Code: Alles auswählen
import logging
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 -----------------------------------------------
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")
Code: Alles auswählen
logging.debug("Debug-Meldung")
logging.info("Info-Meldung")
logging.warning("Warnung")
logging.error("Fehler-Meldung")
logging.ciritical("Kritische Fehler-Meldung")
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