0Pricing
Python Academy · Lektion

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

Einen 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 automatically

Zusä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-enable

Logger-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 handlers

Der 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

  1. Grundlagen des logging-Moduls
  2. Handler, Formatter und Filter
  3. Strukturiertes Logging
  4. Debugging mit pdb
← Zurück zu Python Academy