Python logger für Konsole und Logfiles

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")

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert