Grundlagen des logging-Moduls
Konfigurieren Sie Logger, legen Sie Ebenen fest und geben Sie Nachrichten ordnungsgemäß aus.
Grundlagen des logging-Moduls ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum logging statt print?
Das Modul logging stellt Schweregrade, konfigurierbare Ausgabeziele und Zeitstempel bereit. Außerdem können Sie die Ausgabe ohne Codeänderungen unterdrücken.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")Log-Level
Python definiert fünf Standard-Level mit zunehmendem Schweregrad: DEBUG, INFO, WARNING, ERROR, CRITICAL. Nur Nachrichten auf oder über dem konfigurierten Level werden ausgegeben.
import logging
# Numeric values:
# DEBUG = 10
# INFO = 20
# WARNING = 30
# ERROR = 40
# CRITICAL = 50
logging.basicConfig(level=logging.WARNING)
logging.debug("hidden") # not shown
logging.warning("shown") # shownEinen Logger abrufen
Verwenden Sie in jedem Modul logging.getLogger(__name__). Dadurch entsteht eine Hierarchie, die der Modulstruktur entspricht.
import logging
logger = logging.getLogger(__name__)
def process(data):
logger.info("Processing %d items", len(data))
return [x * 2 for x in data]Optionen von basicConfig
basicConfig konfiguriert schnell den Root-Logger. Häufige Schlüsselwortargumente sind: level, format, filename, filemode.
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(name)s — %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)Felder des Log-Formats
Wichtige Formatfelder: %(levelname)s, %(name)s, %(message)s, %(asctime)s, %(filename)s, %(lineno)d.
import logging
fmt = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logging.info("Server started on port 8080")Ausnahmen protokollieren
Verwenden Sie logger.exception() innerhalb eines except-Blocks, um die Nachricht und den vollständigen Traceback zu protokollieren.
import logging
logger = logging.getLogger(__name__)
try:
1 / 0
except ZeroDivisionError:
logger.exception("Division failed")
# Logs message + traceback automaticallyZusätzlicher Kontext mit extra=
Übergeben Sie ein Dictionary als extra=, um dem Log-Datensatz benutzerdefinierte Felder hinzuzufügen.
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(
format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})Verzögertes String-Formatting
Übergeben Sie Formatargumente separat – formatieren Sie Strings nicht vorab. Dadurch entfällt der Aufwand für die String-Erstellung, wenn die Nachricht herausgefiltert wird.
import logging
logger = logging.getLogger(__name__)
# BAD (always builds the string):
logger.debug(f"Processing {len(data)} items")
# GOOD (only builds if DEBUG is enabled):
logger.debug("Processing %d items", len(data))Logging deaktivieren
Rufen Sie logging.disable(level) auf, um global alle Nachrichten bis einschließlich dieses Levels zu unterdrücken – besonders nützlich in Tests.
import logging
logging.disable(logging.CRITICAL) # suppress everything
# All log calls now silently do nothing
logging.disable(logging.NOTSET) # re-enableLogger-Hierarchie
Logger-Namen verwenden Punkte als Trennzeichen. Untergeordnete Logger leiten ihre Einträge an übergeordnete Logger weiter, sofern propagate=False nicht gesetzt ist.
import logging
parent = logging.getLogger("myapp")
child = logging.getLogger("myapp.database")
# child propagates to parent by default
child.warning("DB slow") # also appears in myapp's handlersDer Root-Logger
Der Root-Logger (aus logging.warning() usw.) ist der Vorfahr aller Logger. Konfigurieren Sie ihn mit basicConfig oder indem Sie Handler direkt hinzufügen.
import logging
root = logging.getLogger() # root logger
root.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
root.addHandler(handler)Kurztest
Welche Logging-Methode sollten Sie innerhalb eines except-Blocks verwenden, damit automatisch der vollständige Traceback eingeschlossen wird?
Zusammenfassung
Verwenden Sie benannte Logger mit getLogger(__name__), konfigurieren Sie sie über basicConfig, übergeben Sie Formatargumente verzögert und verwenden Sie logger.exception() für Fehler-Tracebacks. Logger bilden eine Hierarchie, deren Wurzel der Root-Logger ist.
Häufig gestellte Fragen
Ist die Lektion „Grundlagen des logging-Moduls“ kostenlos?
Ja — der vollständige Text von „Grundlagen des logging-Moduls“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Grundlagen des logging-Moduls“?
Konfigurieren Sie Logger, legen Sie Ebenen fest und geben Sie Nachrichten ordnungsgemäß aus. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Grundlagen des logging-Moduls“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Grundlagen des logging-Moduls
- Handler, Formatter und Filter
- Strukturiertes Logging
- Debugging mit pdb