8

我认为这是为了激活打印所有logging.debug()消息的调试模式。但显然这不会发生。文档只是说:

打开解析器调试输出(仅适用于向导,取决于编译选项)。另请参阅 Python 调试。

这并不能解释我眼中的任何事情。有人可以给出更详细的解释并验证确实没有激活调试日志记录的默认 CPython 参数吗?

4

2 回答 2

6

Parser/parser.c

#ifdef Py_DEBUG
extern int Py_DebugFlag;
#define D(x) if (!Py_DebugFlag); else x
#else
#define D(x)
#endif

当提供调试标志并且解释器在调试模式下编译时,此D宏用于打印调试消息。printf()调试消息适用于 Python 的开发人员,即Python 本身上工作的人(不要与 Python 程序员混淆,他们是使用Python 的人)。我已经浏览了 Python 手册页,但它们都没有激活logging调试模式。但是,可以将-i标志与 结合使用-c来实现相同的效果:

python -i -c "import logging;logging.basicConfig(level=logging.DEBUG)"
于 2013-11-11T13:37:20.380 回答
3

-d选项启用 python 解析器调试标志。除非您正在破解 Python 解释器并更改它解析 Python 代码的方式,否则您不太可能需要该选项。

日志基础设施是标准库模块,而不是解释器的内置功能。有一个解释器标志来改变模块的这种本地化特性没有多大意义。

此外,请考虑日志记录级别如何取决于您正在使用的日志记录器和处理程序。您可以为应用程序的不同部分为不同的记录器和处理程序设置不同的级别。例如,当您希望任何人的所有 DEBUG 行都出现在控制台中时,但应将来自 lib 的 INFO 及更高版本记录到一个公共文件中,并将 WARNING 和 ERROR 记录到特定文件中以便于监控。您可以为 DEBUG 设置一个全局处理程序,将日志记录到控制台,以及其他将不同级别记录到单独文件的处理程序。

于 2013-11-11T13:39:15.533 回答