【问题标题】:Adding magic global methods to modules向模块添加神奇的全局方法
【发布时间】:2010-09-18 16:00:57
【问题描述】:

我开始进入 Python 日志记录模块,但除非我希望所有消息都说“root”,否则我必须为每个模块创建一个记录器,而且一遍又一遍地这样做有点痛苦。

我想如果有一个神奇的__logger__() 方法可以为当前模块返回一个记录器,并在必要时创建它会很方便。可以在没有括号的情况下调用的魔术__logger__ 变量会更好。我该怎么办?

例如,在一个名为 foo 的模块中,我可以调用 __logger__.debug('this is a debug message for the foo module'),它会在我的控制台中显示为:

DEBUG:foo:这是 foo 模块的调试消息

【问题讨论】:

  • 您实际上并没有使用 Lie Ryan 的答案创建记录器,您只是获得了对具有本地名称的标准记录器的引用。换句话说,日志记录模块已经完成了您所要求的大部分工作。
  • 澄清:我已经知道为当前模块检索记录器的手动方式。我想知道的是如何/是否可以向所有 Python 模块添加魔术方法,这样我就不必在我想登录的每个模块中重新输入相同的代码。
  • 我认为没有任何方法可以做到这一点,为了最简单的使用,您必须先使用import logging,然后使用logging.log()(或其中一种方便的方法)。这不是很多工作,您可以使用print 进行更简单的用途。

标签: python logging module magic-methods


【解决方案1】:

你可以使用:

logger = logging.getLogger(__name__)

在你的班级顶部,并像这样使用它:

logger.warn(...)
logger.log(...)

【讨论】:

  • +1:你甚至可以在此之后debug = logger.debug; debug('message') 语法,模块有限,方便。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2012-02-29
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多