我想了解一個應用程序的工作原理。爲此,我將調試命令作爲每個函數正文的第一行插入,其目的是記錄函數的名稱以及將消息發送到日誌輸出的行號(代碼內)。最後,由於此應用程序包含許多文件,因此我想創建一個日誌文件,以便我可以更好地瞭解應用程序的控制流。Python日誌記錄(函數名稱,文件名,行號)使用單個文件
這是我所知道的:
用於獲取函數名,我可以使用
function_name.__name__
,但我不希望使用的函數名(這樣我就可以迅速複製和粘貼在一個通用的Log.info("Message")
所有功能的主體)。我知道這可以用C使用__func__
宏來完成,但我不確定python。用於獲取文件名和行號,我已經看到了(我相信)我的應用程序使用Python
locals()
功能,但在我沒有完全意識到例如語法:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
,我嘗試了使用像LOG.info("My message %s" % locals())
它產生類似{'self': <__main__.Class_name object at 0x22f8cd0>}
。對此有任何意見?我知道如何使用日誌記錄並添加處理程序來記錄到文件,但我不確定是否可以使用單個文件以正確的順序記錄項目中的函數調用。
我將不勝感激任何幫助。
謝謝!
你可以通過使用'import pdb; pdb.set_trace()',然後以交互方式遍歷代碼。這可能會幫助您追蹤程序流程。 –
好主意!謝謝馬特。如問題中提到的那樣獲取日誌仍然有幫助,這樣我就不必每次都進行調試。另外,你是否知道一個用於python的IDE,它和Eclipse for Java一樣好(ctrl + click會帶你到函數定義),我可以利用它來使調試更容易? – user1126425