使用單個文件的 Python 日誌記錄(函數名、文件名、行號)

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

我正在嘗試了解應用程序的工作原理。為此,我將調試命令作為每個函數主體的第一行插入,目的是記錄函數的名稱以及我向日誌輸出發送消息的行號(在代碼中)。最後,由於這個應用程序包含許多文件,所以我想創建一個日誌文件,以便更好地了解應用程序的控制流程。

以下是我所知道的:

  1. 為了獲取函數名,我可以使用 function_name.__name__ 但我不想使用 function_name(這樣我可以快速復制和粘貼通用 Log .info("Message") 在所有函數的主體中)。我知道這可以在 C 中使用 __func__ 宏來完成,但我不確定 python。

  2. 為了獲取文件名和行號,我已經看到(並且我相信)我的應用程序正在使用 Python locals() 函數,但語法是我不完全了解例如: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) 我嘗試使用類似 LOG.info ("My message %s" % locals()) 產生類似 {"self": <__main__.Class_name object at 0x22f8cd0>} 的內容。請對此有任何意見?

  3. 我知道如何使用日誌記錄並向其添加處理程序以記錄到文件,但我不確定是否可以使用單個文件進行記錄所有日誌消息都按照項目中函數調用的正確順序。

非常感謝任何幫助。

謝謝!