Configurer la journalisation
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 modulelogging 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’attributpropagate 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 modulelogging 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 configurationdisable_default_instrumentations et attachez le handler vous-même :
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.
Configuration du framework
Celery
Celery fork des processus worker, donc AppSignal doit être démarré pour chaque fork. Utilisez le signalworker_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éfinitpropagate=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 :
LOGGING plutôt que de l’attacher dans le code, afin qu’il survive à la configuration du module de journalisation par Django :
Envoi de journaux avec OpenTelemetry
Vous pouvez également envoyer des journaux directement en utilisant l’API logs d’OpenTelemetry, sans passer par le modulelogging de Python :
message devient le message de la ligne de journal :
Filtrage des journaux
Vous pouvez utiliser l’option de configurationignore_logs pour ignorer les lignes de journal. Consultez notre guide Ignore Logs pour en savoir plus.