2

在编写 python 模块和类时,我经常有疑问,特别是:

我应该在哪里/如何放置控制日志记录的主要标志以及在哪里/如何创建记录器,

  • 它应该在模块级别吗?---因此需要global MyLogger在每个方法中几乎无处不在。

  • 它应该是传递给方法和/或类的参数吗?也许要决定一个方法或类是否需要它,也许我可以使用**args星星魔法,像调用一样myMethod(..., logger=Mylogger)

  • 我应该在哪里定义/设置I_logged_something标志?(...或者我应该依靠if MyLogger: MyLogger.log('something')

  • 什么时候导入类或模块?

Pythonic 的日志记录方式是什么?您如何使用日志记录工具?

4

1 回答 1

5

无论如何,您在任何地方都使用日志记录。

在您的模块中,使用:

import logging

log = logging.getLogger(__name__)

并注销。根据您记录的消息类型使用不同的级别(log.info()log.debug()、等)。log.error()

然后,您的主入口点配置logging模块输出。这可以包括完全禁用任何输出,或将调试信息定向到文件,但将错误记录到控制台。

您的模块不需要关心,logging模块处理输出处理程序的配置和格式化为全局状态。

于 2013-09-06T15:09:05.837 回答