• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Logging de l'agent Python

Problème

Vous pouvez configurer l'agent Python pour log la sortie. Cette configuration permet à l'agent de vérifier s'il se connecte correctement à New Relic et si des erreurs se produisent. Ces informations seront utiles au support New Relic si vous rencontrez des problèmes.

Solution

Un logging debug détaillé peut vous aider à résoudre les problèmes d’installation de votre agent Python standard.

Important

Certains partenaires utilisent des procédures différentes :

Pour activer le logging debug :

  1. Ouvrez votre newrelic.ini, généralement situé dans la hiérarchie de votre application.

  2. Décommentez #log_file = /tmp/newrelic-python-agent.log. Assurez-vous que vous disposez des autorisations d'écriture sur l'emplacement log , en modifiant le chemin et le nom du fichier si nécessaire. S'il n'y a pas d'emplacement de fichier approprié, vous pouvez définir log_file sur stderr.

  3. Remplacez log_level par debug (au lieu de info).

    Prudence

    Le logging à debug peut générer beaucoup de données très rapidement. Monitorez attentivement la taille de votre fichier log , en remplaçant log_level par info une fois le dépannage terminé.

  4. Enregistrez et fermez le fichier. Redémarrez votre application pour que les paramètres prennent effet.

  5. Générez quelques minutes de trafic vers votre application.

  6. Si vous envoyez votre fichier de log au support New Relic, joignez votre newrelic.ini à votre ticket d'assistance et indiquez au support votre fuseau horaire.

Important

Lorsque vous dépannagez votre agent Python New Relic, assurez-vous qu'il a été configuré pour générer un fichier log de niveau de débogage et monitorez de près la taille de votre fichier log . L'utilisation de log_level = debug génère beaucoup de données très rapidement. Après avoir reproduit votre problème, renvoyez le fichier de log à log_level = info.

se connecter à un fichier

L'agent utilise le module de logging Python pour générer le message de log. La sortie de l'agent doit donc être prise en compte dans la stratégie de logging globale de votre application.

Si vous n'utilisez pas le module de logging, l'agent fournit un moyen simplifié d'activer un fichier de log pour l'agent Python . Pour l'utiliser, définissez les options log_file et log_level dans le fichier de configuration de l'agent.

Example:

log_file = /tmp/newrelic-python-agent.log
log_level = info

Le chemin fourni pour log_file doit être accessible en écriture pour l'utilisateur sous lequel votre application s'exécute.

Conseil

Si vous utilisez Apache/mod_wsgi l'utilisateur Apache a un accès restreint au système de fichiers. Créez un répertoire spécial dans lequel le fichier de log peut être placé et qui est accessible en écriture à l'utilisateur Apache . Il est recommandé d'utiliser un chemin absolu et non un chemin relatif.

Le niveau de log utilisé peut être l'un des suivants : error, warning, info ou debug. Dans des circonstances normales, utilisez info. Des options de débogage plus détaillées sont utilisées pour debug. N'utilisez pas ces options de débogage détaillées pendant une période prolongée. Ils peuvent générer une sortie excessive et le gestionnaire de fichiers log du module de logging est le gestionnaire de fichiers standard et n'effectue aucune rotation de fichiers log .

logarithme de l'erreur standard

Pour certains fournisseurs d'hébergement, il peut ne pas être possible d'utiliser un fichier de log distinct pour l'agent. Configurez le module de logging pour log sur la sortie d'erreur standard. Cette sortie est capturée dans le fichier log d'erreur normal de votre mécanisme d'hébergement.

Pour ce faire dans le fichier de configuration de l’agent :

log_file = stderr
log_level = info

La valeur stdout peut également être utilisée à la place de stderr.

enregistrer toutes les données ( log d'audit)

Si vous devez enregistrer et afficher des informations sur les donnéesall transmises entre le processus de monitoring et le collecteur New Relic, vous pouvez activer le logging d'audit pendant de courtes périodes. Cela est utile, par exemple, pour le débogage ou l'audit, lorsque vous avez besoin d'informations détaillées sur ce qui est exactement transmis.

Résoudre les conflits du module log

Si aucun logging n'est capturé, il peut y avoir un conflit avec la manière dont le module de logging Python est initialisé et/ou configuré. Des problèmes peuvent survenir lors de l’utilisation des fonctions suivantes :

Reportez-vous à la documentation de tout framework ou application Web utilisé. Il peut fournir un mécanisme spécialisé pour configurer le module de logging Python. Par exemple, lors de l’utilisation de Django, l’approche du dictionnaire pour la configuration du module de logging Python est prise en charge automatiquement, les définitions étant définies dans l’attribut LOGGING dans le module de paramètres Django.

Pour plus d'informations, consultez la documentation de configuration du logging Django .

Fichier de logde l'agent de rotation

Lors de l'utilisation de l'option log_file dans la configuration de l'agent, le gestionnaire de fichiers standard du module de logging est utilisé. Cela n'effectue aucune rotation de fichier de log . La rotation des fichiers logs ne se fait pas automatiquement car nous ne saurons pas quel type de gestionnaire de fichiers log rotatifs vous souhaitez utiliser, de plus les gestionnaires de fichiers log rotatifs standard fournis avec Python ne sont pas nécessairement sûrs pour une configuration multi-processus. Il peut donc être nécessaire de télécharger et d'utiliser l'un des gestionnaires de fichiers log rotatifs tiers ou d'utiliser un système de logging dédié.

Si votre application s'exécute dans un processus unique, vous pouvez utiliser en toute sécurité l'un des gestionnaires RotatingFileHandler ou TimedRotatingFileHandler fournis avec le module de logging. Pour l'utiliser uniquement pour la sortie de l'agent Python, incluez au début de votre fichier de script ou module WSGI, mais avant l'importation du module newrelic , les éléments suivants :

_LOG_FORMAT = (
"%(asctime)s (%(process)d/%(threadName)s)" " %(name)s %(levelname)s - %(message)s"
)
_logger = logging.getLogger("newrelic")
_handler = logging.handlers.TimedRotatingFileHandler(
"agent.log", when="midnight", backupCount=7
)
_formatter = logging.Formatter(_LOG_FORMAT)
_handler.setFormatter(_formatter)
_logger.addHandler(_handler)
_logger.setLevel(logging.INFO)

Ce code accède à l'instance d'enregistreur racine newrelic, y attache le gestionnaire de fichier de log rotatif et définit le niveau de log pour les messages à envoyer à ce fichier de log. Nous montrons également comment configurer le format du message de log , mais cela est facultatif.

Si le module de logging dans son ensemble est initialisé, toute sortie log sera propagée et enregistrée par tout gestionnaire associé à l'enregistreur racine, y compris éventuellement vers l'erreur standard. Pour éviter les doublons, configurez le gestionnaire log pour l'enregistreur racine.

Le code ci-dessus pourrait également être simplifié en utilisant la fonction logging.fileConfig() et un fichier de configuration. Pour plus de détails sur l'utilisation d'un fichier configuration consultez la documentation du module de logging Python sur configuration de logging.

Faire pivoter les logs dans une configuration multiprocessus

Les gestionnaires de fichiers log rotatifs fournis dans le module de logging standard ne sont pas entièrement sûrs à utiliser dans une configuration de serveur multi-processus. Les problèmes qui peuvent survenir sont le mélange de messages provenant de plusieurs processus et les tentatives de plusieurs processus d'effectuer une rotation du fichier log en même temps.

Pour un mécanisme de rotation de fichier de log plus robuste, utilisez un gestionnaire log tiers en conjonction avec le module de logging Python .

Une telle implémentation disponible sur PyPi est :

Pour une solution plus complexe, vous pouvez également envisager un service de logging tel que :

Consultez également la liste des autres gestionnaires fournis en standard dans le module de logging Python, car ceux destinés à l'envoi vers un socket ou à la publication vers une URL HTTP peuvent également être des solutions raisonnables dans certaines circonstances.

Droits d'auteur © 2025 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.