【发布时间】:2012-06-13 23:02:34
【问题描述】:
我正在尝试了解应用程序的工作原理。为此,我将调试命令作为每个函数主体的第一行插入,目的是记录函数的名称以及向日志输出发送消息的行号(在代码中)。最后,由于这个应用程序包含许多文件,因此我想创建一个日志文件,以便更好地了解应用程序的控制流程。
这是我所知道的:
为了获取函数名,我可以使用
function_name.__name__,但我不想使用function_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 调试器,然后以交互方式逐步执行代码。这可能有助于您跟踪程序流程。 -
好主意!谢谢马特。获取问题中提到的日志仍然会有所帮助,这样我就不必每次都进行调试。另外,你知道我可以利用它来简化调试吗?