Estoy tratando de aprender cómo funciona una aplicación. Y para esto, estoy insertando comandos de depuración como la primera línea del cuerpo de cada función con el objetivo de registrar el nombre de la función, así como el número de línea (dentro del código) donde envío un mensaje a la salida del registro. Finalmente, dado que esta aplicación se compone de muchos archivos, quiero crear un solo archivo de registro para poder comprender mejor el flujo de control de la aplicación.
Esto es lo que sé:
para obtener el nombre de la función, puedo usar
function_name.__name__
pero no quiero usar el nombre_función (para poder copiar y pegar rápidamente un genéricoLog.info("Message")
en el cuerpo de todas las funciones). Sé que esto podría hacerse en C usando__func__
macro, pero no estoy seguro de Python.para obtener el nombre del archivo y el número de línea, he visto que (y creo que) mi aplicación está usando la
locals()
función Python pero en una sintaxis de la que no estoy completamente consciente, por ejemplo:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
y lo intenté usando likeLOG.info("My message %s" % locals())
que produce algo como{'self': <__main__.Class_name object at 0x22f8cd0>}
. ¿Alguna entrada sobre esto por favor?Sé cómo usar el registro y agregarle un controlador para registrarlo en un archivo, pero no estoy seguro de si se puede usar un solo archivo para registrar todos los mensajes de registro en el orden correcto de las llamadas a funciones en el proyecto.
Agradecería mucho cualquier ayuda.
¡Gracias!
import pdb; pdb.set_trace()
y luego recorrer el código de forma interactiva. Eso puede ayudarlo a rastrear el flujo del programa.