Skip to main content
Diese Dokumentation beschreibt, wie Sie Logging mit der AppSignal for Python-Integration konfigurieren.
Logging ist nur im Collector-Modus verfügbar, der ein experimentelles Feature ist.

Logging konfigurieren

🔐 Senden Sie keine personenbezogenen Daten (Personal Identifiable Information, PII) an AppSignal. Filtern Sie PII (z. B. Namen, E-Mail-Adressen) aus Logs und verwenden Sie stattdessen eine ID, einen Hash oder einen pseudonymisierten Bezeichner.

Für HIPAA-pflichtige Stellen finden Sie weitere Informationen zum Abschluss eines Business Associate Agreement (BAA) in unserer Business Add-Ons-Dokumentation.
Sie müssen keine Log-Quelle erstellen, um Logs aus der AppSignal for Python-Integration zu senden. Eine “application”-Log-Quelle wird automatisch erstellt. Im Collector-Modus instrumentiert AppSignal automatisch das integrierte logging-Modul von Python über OpenTelemetry und hängt einen Handler an den Root-Logger.

Welche Logs erfasst werden

AppSignal erfasst Logs, die an den Root-Logger gesendet werden, sowie an jeden Logger, der an ihn propagiert. Die Propagierung wird durch das Attribut propagate an jedem Logger gesteuert, das in Python standardmäßig auf True gesetzt ist. Logger mit propagate=False lassen ihre Nachrichten nicht von AppSignal erfassen. Einige Bibliotheken und Frameworks setzen dieses Attribut an ihren eigenen Loggern. Django setzt es beispielsweise an django.server; wie Sie das überschreiben, zeigt der Django-Abschnitt.

Log-Level festlegen

Das logging-Modul von Python verwendet standardmäßig das Log-Level WARNING, wodurch INFO- und DEBUG-Log-Nachrichten nicht erfasst werden. Um Nachrichten mit niedrigerer Severity zu erfassen, setzen Sie das Level des Root-Loggers:

Nur bestimmte Logger an AppSignal senden

Standardmäßig erfasst AppSignal alles, was den Root-Logger erreicht. Um stattdessen eine ausgewählte Menge von Loggern zu senden, deaktivieren Sie die automatische Instrumentierung mit der Konfigurationsoption disable_default_instrumentations und hängen Sie den Handler selbst an:
Übergeben Sie log_code_attributes=True, um die Datei, Funktion und Zeile zu erfassen, aus der jede Log-Zeile stammt, so wie es die automatische Instrumentierung tut. Ein Handler, den Sie selbst anhängen, ist nicht wie die automatische Instrumentierung gegen eine spätere Neukonfiguration geschützt. Bei Django ist das Hinzufügen zur Logging-Konfiguration selbst der zuverlässigste Weg, ihn anzuhängen.
Das Deaktivieren der automatischen Instrumentierung verhindert, dass AppSignal einen eigenen Handler anhängt. Wenn Sie Ihren eigenen Handler anhängen, ohne sie zu deaktivieren, wird jede Log-Zeile, die beide Handler erreicht, doppelt gesendet.

Framework-Setup

Celery

Celery forkt Worker-Prozesse, daher muss AppSignal für jeden Fork gestartet werden. Verwenden Sie das worker_process_init-Signal, um AppSignal neu zu initialisieren und Logging in jedem Worker-Prozess zu konfigurieren. Weitere Details zur Instrumentierung von Celery-Tasks finden Sie auf der Seite zur Celery-Instrumentierung.

Django

Django setzt propagate=False an seinem django.server-Logger, sodass dessen Nachrichten den Root-Logger, an dem der Handler von AppSignal angehängt ist, nicht erreichen. Überschreiben Sie dies in Ihrer LOGGING-Einstellung:
Um nur bestimmte Logger an AppSignal zu senden, fügen Sie den Handler zu Ihrer LOGGING-Einstellung hinzu, anstatt ihn im Code anzuhängen, damit er erhalten bleibt, wenn Django das Logging-Modul konfiguriert:
Für frühere Versionen von AppSignal for Python haben wir empfohlen, den OpenTelemetry-LoggingHandler zu Ihrer LOGGING-Konfiguration hinzuzufügen. Beim Upgrade auf AppSignal for Python 1.9.0 sollten Sie den OpenTelemetry-LoggingHandler aus Ihrer Konfiguration entfernen, da AppSignal einen eigenen Handler anhängt, wodurch Ihr Handler doppelte Zeilen ausgeben würde.

Logs mit OpenTelemetry senden

Sie können Logs auch direkt über die OpenTelemetry Logs API senden, ohne den Umweg über das logging-Modul von Python:
Wenn Sie ein Dictionary als Body übergeben, wird eine strukturierte Log-Zeile gesendet. Ihre Schlüssel werden zu Attributen der Log-Zeile in AppSignal, und ein message-Schlüssel wird zur Nachricht der Log-Zeile:

Logs filtern

Sie können die Konfigurationsoption ignore_logs verwenden, um Log-Zeilen zu ignorieren. Lesen Sie unseren Leitfaden zum Ignorieren von Logs, um mehr zu erfahren.

Brauchen Sie Hilfe?

Nachdem Sie Ihre Python-Anwendung so konfiguriert haben, dass sie Logs sendet, sollten die Logs in AppSignal erscheinen. Wenn Sie sich bei diesem Schritt unsicher sind oder AppSignal keine Logs empfängt, können Sie sich jederzeit für Unterstützung an uns wenden. Wir helfen Ihnen, wieder auf Kurs zu kommen!