Mittels des logging Moduls in python lassen sich nicht nur log messages für Log-Dateien erstellen, sondern auch die normalen Nachrichten welche man auf der Konsole ausgibt. – Das hat den Vorteil, dass man die Ausgabe danach beliebig nur noch in logfiles schreiben- (z.B. mit einem „–quiet / -q“ Paramater), oder mehr Nachrichten auf der Konsole ausgeben kann (z.B. mit einem –verbose / -v) Parameter.
Zuerst erstellt man am besten eine eigene Funktion, welche das logging initialisiert:
import logging def init_logging(): # create logger global logger logger = logging.getLogger("script name") # create handlers logfile_handle = logging.FileHandler(filename = "log.log") console_handle = logging.StreamHandler() # set loglevel logger.setLevel(logging.DEBUG) logfile_handle.setLevel(logging.DEBUG) console_handle.setLevel(logging.INFO) # add handlers to logger logger.addHandler(logfile_handle) logger.addHandler(console_handle) # create Formatting format_file = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") format_console = logging.Formatter("\033[0;32m%(asctime)s\033[0m - %(message)s") # add formatter to handler logfile_handle.setFormatter(format_file) console_handle.setFormatter(format_console) logger.debug("Logging initialized") init_logging() |
Danach kann die Ausgabe wie folgt aufrufen:
logger.info("This informational message only goes to console.") logger.warn("This warning message only goes to console") |