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 también el número de línea (dentro del código) donde envío un mensaje al resultado del registro. Finalmente, dado que esta aplicación se compone de muchos archivos, quiero crear un único archivo de registro para que pueda comprender mejor el flujo de control de la aplicación.Registro de Python (nombre de la función, nombre de archivo, número de línea) utilizando un único archivo
Esto es lo que sé:
para obtener nombre de la función, puedo usar
function_name.__name__
pero no desee utilizar el function_name (para que pudiera rápidamente copiar y pegar un genérico en elLog.info("Message")
cuerpo de todas las funciones). Sé que esto podría hacerse en C usando macro__func__
pero no estoy seguro acerca de Python.para obtener el nombre de archivo y número de línea, he visto que (y creo que) mi aplicación está utilizando la función de Python
locals()
pero en una sintaxis que no soy completamente consciente de, por ejemplo:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
y lo probé utilizando comoLOG.info("My message %s" % locals())
que produce algo así como{'self': <__main__.Class_name object at 0x22f8cd0>}
. Cualquier entrada en esto, por favor?Sé cómo usar el registro y agregar controlador para iniciar sesión 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.
Agradeceria cualquier ayuda.
Gracias!
Puede pasar al depurador de python utilizando 'import pdb; pdb.set_trace() ', y luego recorrer el código de forma interactiva. Eso puede ayudarlo a rastrear el flujo del programa. –
¡Gran idea! Gracias Matt. Todavía sería útil obtener un registro como se menciona en la pregunta para no tener que depurar todo el tiempo. Además, ¿conoces un IDE para python que sea tan bueno como Eclipse para Java (ctrl + clic lo lleva a la definición de la función) que puedo utilizar para facilitar la depuración? – user1126425