Registro de Python (nombre de función, nombre de archivo, número de línea) usando un solo archivo

| | | | | | | | | | | |

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 único archivo de registro para poder comprender mejor el flujo de control de la aplicación.

Esto es lo que sé:

  1. para obtener el nombre de la función, puedo usar function_name.__name__ pero no quiero usar function_name (para poder copiar y pegar rápidamente un Log genérico .info("Mensaje") en el cuerpo de todas las funciones). Sé que esto podría hacerse en C usando la macro __func__ pero no estoy seguro acerca de python.

  2. para obtener el nombre del archivo y el número de línea, he visto que (y creo que) mi aplicación usa la función Python locals() pero en una sintaxis que soy no completamente consciente de, por ejemplo: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) y lo probé usando como LOG.info ("Mi mensaje %s" % locales()) que produce algo como {"self": <__main__.Class_name object at 0x22f8cd0>}. ¿Algún aporte sobre esto, por favor?

  3. Sé cómo usar el registro y agregarle un 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 llamadas a funciones en el proyecto.

Agradecería mucho cualquier ayuda.

¡Gracias!