Python Logging (nome da função, nome do arquivo, número da linha) usando um único arquivo

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

Estou tentando aprender como um aplicativo funciona. E para isso estou inserindo comandos debug como a primeira linha do corpo de cada função com o objetivo de registrar o nome da função assim como o número da linha (dentro do código) onde envio uma mensagem para a saída do log. Finalmente, como este aplicativo é composto por muitos arquivos, quero criar um único arquivo de log para que eu possa entender melhor o fluxo de controle do aplicativo.

Aqui está o que sei:

  1. para obter o nome da função, posso usar function_name.__name__ mas não quero usar o function_name (para que eu possa copiar e colar rapidamente um Log genérico .info("Message") no corpo de todas as funções). Eu sei que isso pode ser feito em C usando a macro __func__, mas não tenho certeza sobre python.

  2. para obter o nome do arquivo e o número da linha, vi que (e acredito que) meu aplicativo está usando a função locals() do Python, mas em uma sintaxe que estou não estou completamente ciente de, por exemplo: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) e eu tentei usando como LOG.info ("Minha mensagem %s" % locals()) que produz algo como {"self": objeto <__main__.Class_name em 0x22f8cd0>}. Alguma entrada sobre isso, por favor?

  3. Sei como usar o registro e adicionar um manipulador a ele para registrar em um arquivo, mas não tenho certeza se um único arquivo pode ser usado para gravar todas as mensagens de log na ordem correta das chamadas de função no projeto.

Agradeceria muito qualquer ajuda.

Obrigado!