Logging konfigurieren
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 integriertelogging-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 Attributpropagate 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
Daslogging-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 Konfigurationsoptiondisable_default_instrumentations und hängen Sie den Handler selbst an:
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.
Framework-Setup
Celery
Celery forkt Worker-Prozesse, daher muss AppSignal für jeden Fork gestartet werden. Verwenden Sie dasworker_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 setztpropagate=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:
LOGGING-Einstellung hinzu, anstatt ihn im Code anzuhängen, damit er erhalten bleibt, wenn Django das Logging-Modul konfiguriert:
Logs mit OpenTelemetry senden
Sie können Logs auch direkt über die OpenTelemetry Logs API senden, ohne den Umweg über daslogging-Modul von Python:
message-Schlüssel wird zur Nachricht der Log-Zeile:
Logs filtern
Sie können die Konfigurationsoptionignore_logs verwenden, um Log-Zeilen zu ignorieren. Lesen Sie unseren Leitfaden zum Ignorieren von Logs, um mehr zu erfahren.