Skip to main content
Cette documentation décrit comment configurer la journalisation avec l’intégration AppSignal for Python.
La journalisation n’est disponible qu’en utilisant le mode collector, qui est une fonctionnalité expérimentale.

Configurer la journalisation

🔐 N’envoyez pas d’informations personnelles identifiables (PII) à AppSignal. Filtrez les PII (par exemple, noms, e-mails) des journaux et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place.

Pour les entités couvertes par la HIPAA, plus d’informations sur la signature d’un Business Associate Agreement (BAA) sont disponibles dans notre documentation Business Add-Ons.
Vous n’avez pas besoin de créer une source de journaux pour envoyer des journaux depuis l’intégration AppSignal for Python. Une source de journaux “application” sera créée automatiquement. Lors de l’utilisation du mode collector, AppSignal instrumente automatiquement le module logging intégré de Python via OpenTelemetry, en attachant un handler au logger racine.

Quels journaux sont capturés

AppSignal capture les journaux envoyés au logger racine et à tout logger qui s’y propage. La propagation est contrôlée par l’attribut propagate sur chaque logger, qui est par défaut à True en Python. Les loggers avec propagate=False n’auront pas leurs messages capturés par AppSignal. Certaines bibliothèques et certains frameworks définissent cet attribut sur leurs propres loggers. Django, par exemple, le définit sur django.server ; la section Django montre comment le remplacer.

Définir le niveau de journal

Le module logging de Python utilise par défaut le niveau de journal WARNING, ce qui signifie que les messages INFO et DEBUG ne sont pas capturés. Pour capturer les messages de sévérité inférieure, définissez le niveau du logger racine :

Envoyer uniquement certains loggers à AppSignal

Par défaut, AppSignal capture tout ce qui atteint le logger racine. Pour envoyer uniquement un ensemble choisi de loggers, désactivez l’instrumentation automatique avec l’option de configuration disable_default_instrumentations et attachez le handler vous-même :
Passez log_code_attributes=True pour enregistrer le fichier, la fonction et la ligne d’où provient chaque ligne de journal, comme le fait l’instrumentation automatique. Un handler que vous attachez vous-même n’est pas protégé contre une reconfiguration ultérieure comme l’est l’instrumentation automatique. Pour Django, l’ajouter directement à la configuration de journalisation est le moyen le plus fiable de l’attacher.
Désactiver l’instrumentation automatique est ce qui empêche AppSignal d’attacher son propre handler. Attacher votre propre handler sans la désactiver envoie deux fois chaque ligne de journal qui atteint les deux handlers.

Configuration du framework

Celery

Celery fork des processus worker, donc AppSignal doit être démarré pour chaque fork. Utilisez le signal worker_process_init pour réinitialiser AppSignal et configurer la journalisation dans chaque processus worker. Consultez la page d’instrumentation Celery pour plus de détails sur l’instrumentation des tâches Celery.

Django

Django définit propagate=False sur son logger django.server, de sorte que ses messages n’atteignent pas le logger racine où le handler d’AppSignal est attaché. Remplacez-le dans votre configuration LOGGING :
Pour envoyer uniquement certains loggers à AppSignal, ajoutez le handler à votre configuration LOGGING plutôt que de l’attacher dans le code, afin qu’il survive à la configuration du module de journalisation par Django :
Pour les versions précédentes d’AppSignal for Python, nous recommandions d’ajouter le LoggingHandler d’OpenTelemetry à votre configuration LOGGING. Lors de la mise à niveau vers AppSignal for Python 1.9.0, vous devez supprimer le LoggingHandler d’OpenTelemetry de votre configuration, car AppSignal attachera son propre handler, ce qui ferait émettre des lignes en double par votre handler.

Envoi de journaux avec OpenTelemetry

Vous pouvez également envoyer des journaux directement en utilisant l’API logs d’OpenTelemetry, sans passer par le module logging de Python :
Passer un dictionnaire comme body envoie une ligne de journal structurée. Ses clés deviennent des attributs de la ligne de journal dans AppSignal, et une clé message devient le message de la ligne de journal :

Filtrage des journaux

Vous pouvez utiliser l’option de configuration ignore_logs pour ignorer les lignes de journal. Consultez notre guide Ignore Logs pour en savoir plus.

Besoin d’aide ?

Après avoir configuré votre application Python pour envoyer des journaux, les journaux devraient apparaître dans AppSignal. Si vous avez des doutes sur cette étape ou si AppSignal ne reçoit aucun journal, vous pouvez toujours nous contacter pour obtenir de l’aide. Nous vous aiderons à remettre les choses sur la bonne voie !