Python Logging (nome della funzione, nome del file, numero di riga) utilizzando un unico file

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

Sto cercando di imparare come funziona un'applicazione. E per questo sto inserendo i comandi di debug come prima riga del corpo di ogni funzione con l'obiettivo di registrare il nome della funzione e il numero di riga (all'interno del codice) dove invio un messaggio all'output del registro. Infine, poiché questa applicazione comprende molti file, voglio creare un unico file di registro in modo da poter comprendere meglio il flusso di controllo dell'applicazione.

Ecco cosa so:

  1. per ottenere il nome della funzione, posso usare nome_funzione.__nome__ ma non voglio usare il nome_funzione (in modo da poter copiare e incollare rapidamente un Log generico .info("Message") nel corpo di tutte le funzioni). So che questo potrebbe essere fatto in C usando la macro __func__ ma non sono sicuro di Python.

  2. per ottenere il nome del file e il numero di riga, ho visto che (e credo che) la mia applicazione stia usando la funzione Python locals() ma in una sintassi che sono io non del tutto consapevole ad esempio: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) e l'ho provato usando come LOG.info ("Il mio messaggio %s" % locals()) che produce qualcosa come {"self": <__main__.oggetto Class_name at 0x22f8cd0>}. Qualche input su questo per favore?

  3. So come usare la registrazione e aggiungere un gestore per accedere a un file ma non sono sicuro che un singolo file possa essere usato per registrare tutti i messaggi di registro nell'ordine corretto delle chiamate di funzione nel progetto.

Apprezzerei molto qualsiasi aiuto.

Grazie!