¿Es posible decorar/extender el sistema de registro estándar de Python, de modo que cuando se invoca un método de registro también registra el archivo y el número de línea donde se invocó o quizás el método que lo invocó?Cómo registrar el nombre del archivo fuente y el número de línea en Python
Respuesta
Seguro, marque formatters en los documentos de registro. Específicamente las variables lineno y nombre de ruta.
% (ruta) s Ruta de acceso completa del archivo de origen, donde se emitió el registro de llamadas (si está disponible).
% (filename) s Porción del nombre de archivo de la ruta.
% (módulo) s Módulo (nombre de la parte del nombre del archivo).
% (funcName) s Nombre de la función que contiene la llamada de registro.
% (lineno) d Número de línea de origen donde se emitió la llamada de registro (si está disponible).
es como la siguiente:
formatter = logging.Formatter('[%(asctime)s] p%(process)s {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s','%m-%d %H:%M:%S')
Encima de Seb's very useful answer, aquí es un fragmento de código práctico que demuestra el uso del registrador con un formato razonable:
#!/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")
Genera esta salida:
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
Utilice esto para obtener más detalles: formateador = logging.Formatter ( '% (asctime) s,% (levelname) -8s [% (filename) s:% (module) s:% (funcName) s:% (lineno) d]% (mensaje) s ') –
- 1. ¿Cómo encontrar el número de línea del cursor en Python?
- 2. nombre de archivo y número de línea del script de python
- 3. ¿Cómo obtener el nombre del archivo de origen y el número de línea de un miembro de tipo?
- 4. ¿Cómo imprimir el nombre del método y el número de línea y deshabilitar condicionalmente NSLog?
- 5. Obtener línea Número de cierta frase en el archivo Python
- 6. Cómo obtener el método circundante en el archivo fuente Java para un número de línea dado
- 7. Anulando el número de línea en la fuente Java generada
- 8. Grep list nombre de archivo y número de línea
- 9. Registro de Python (nombre de la función, nombre de archivo, número de línea) utilizando un único archivo
- 10. Python: ¿cómo obtener el nombre del archivo en Windows?
- 11. ¿Cómo recuperar el código fuente python (.py) del archivo .pyo?
- 12. Obtener el nombre de la fuente del archivo .ttf
- 13. ajuste del punto de ruptura usando el número de línea de código fuente en WinDBG
- 14. Python Cuando encuentro una excepción, ¿cómo obtengo el tipo, archivo y número de línea?
- 15. ¿Cómo determinar el archivo, la función y el número de línea?
- 16. Imprima el nombre del archivo, el número de línea y el nombre de función de una función de llamada - Prog C
- 17. ¿Cómo registrar un número de serie en un archivo ejecutable?
- 18. ¿Cómo extraer el nombre del archivo del nombre de la ruta del archivo?
- 19. ¿Cambiar el nombre del archivo en Cocoa?
- 20. Cuando encuentro una excepción, ¿cómo obtengo el tipo, archivo y número de línea del cuadro anterior?
- 21. Cómo capturar número tras nombre en python
- 22. ¿Cómo obtener el nombre de archivo de logging.FileHandler en Python?
- 23. ¿Cómo obtener solo el nombre del archivo en el preprocesador?
- 24. ¿Puede el nombre de archivo de instalación derivarse del número de versión del archivo ejecutable?
- 25. ¿Cómo obtener el número de línea de función (con/sin decorador) en un módulo de python?
- 26. ¿Obtener el número de puerto para el nombre del servicio?
- 27. ¿Cómo obtengo el comando find para imprimir el tamaño del archivo con el nombre del archivo?
- 28. ¿Cómo encontrar el archivo en cada directorio con el número más alto como nombre de archivo?
- 29. Github API ... Obtener el nombre del archivo fuente en un archivo movido/renombrado
- 30. Python - Cómo usar la expresión regular en el archivo, línea por línea, en Python
+1: Presupuesto documentación. –