Est-il possible de décorer/étendre le système de consignation standard python, de sorte que lorsqu'une méthode de consignation est invoquée, il enregistre également le fichier et le numéro de ligne où il a été invoqué la méthode qui l'a invoqué?Comment enregistrer le nom du fichier source et le numéro de ligne en Python
Répondre
Bien sûr, vérifiez formatters dans les documents de journalisation. Plus précisément les variables lineno et pathname.
% (chemin) de Chemin complet du fichier source où a été émis l'appel d'enregistrement (le cas échéant).
% (nom de fichier) s Nom de fichier du chemin d'accès.
% (module) de Module (en partie nom de fichier).
% (funcName) s Nom de la fonction contenant l'appel de journalisation.
% (lineno) d Numéro de ligne de la source où l'appel de journalisation a été émis (si disponible).
ressemble à quelque chose comme ceci:
formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S')
En plus de Seb's very useful answer, voici un extrait de code pratique qui montre l'utilisation de l'enregistreur avec un format raisonnable:
#!/usr/bin/env python
import logging
logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%d-%m-%Y:%H:%M:%S',
level=logging.DEBUG)
logger = logging.getLogger('stackoverflow_rocks')
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.critical("This is critical")
logger.error("An error occurred")
Génère cette sortie:
06-06-2017:17:07:02,158 DEBUG [log.py:11] This is a debug log
06-06-2017:17:07:02,158 INFO [log.py:12] This is an info log
06-06-2017:17:07:02,158 CRITICAL [log.py:13] This is critical
06-06-2017:17:07:02,158 ERROR [log.py:14] An error occurred
Utilisez ceci pour plus de détails: formatter = logging.Formatter ( '% (asctime) s,% (nom de niveau) -8s [% (nom de fichier) s:% (module) s:% (funcName) s:% (lineno) d]% (message) s ') –
- 1. Python Lorsque j'attrape une exception, comment obtenir le type, le fichier et le numéro de ligne?
- 2. Comment obtenir le numéro de ligne en utilisant le scanner
- 3. Déterminez le nom de la méthode à partir du numéro de ligne en Java?
- 4. Récupération du numéro de version d'un fichier source dans ClearCase
- 5. Obtenir le nom du fichier en PHP
- 6. Python - Enregistrer le contexte
- 7. Comment enregistrer le nom de l'utilisateur connecté?
- 8. Lire le contenu du fichier et trouver le nom de fichier complet sur le disque
- 9. Comment puis-je imprimer le numéro de ligne source en Perl?
- 10. Enregistrer le fichier image avec le dialogue en utilisant java
- 11. python Nom du fichier de la classe du module MySQL
- 12. Comment obtenir le nom de fichier du module __main__ en Python?
- 13. Django, enregistrer l'utilisateur avec le prénom et le nom?
- 14. trouver le nom du module de l'exception d'origine en Python
- 15. Lorsque j'attrape une exception, comment obtenir le type, le fichier et le numéro de ligne de l'image précédente?
- 16. obtenir le nom du site d'une URL en python
- 17. Impossible d'obtenir php pour enregistrer le nom de fichier avec le nom correct
- 18. Numéro de version du fichier dans la source avec Vault
- 19. Manière rapide d'ajouter la ligne/numéro de ligne dans le fichier texte
- 20. pour enregistrer le numéro de ligne dans mon application par programme
- 21. Comment obtenir le nom d'un script Python en cours d'exécution?
- 22. Comment valider le nom d'hôte (peut être IP) et le numéro de port (CString)
- 23. Java chiffrer et enregistrer le vecteur dans le fichier
- 24. Inclure automatiquement le numéro de version DLL dans le nom de fichier dans Visual Studio
- 25. In Batch: Lit uniquement le nom de fichier d'une variable avec le chemin et le nom de fichier
- 26. Comment supprimer le nom de fichier?
- 27. ouvrir et enregistrer le fichier sans sauvegarder/ouvrir le dialogue
- 28. Obtenir le numéro de ligne jsp réel à partir d'un numéro de ligne de trace de la pile?
- 29. Comment formater le nom du fichier outfile (ou le fichier dump)
- 30. Comment utiliser le rapport IIS Debug Diagnostics pour localiser la ligne du fichier source dans le composant COM Delphi
+1: Citer le Documentation. –