16

Python 日志教程说新的格式化方法超出了教程的范围,没有提到在哪里学习它。

我将不胜感激任何示例或文档链接,这些示例或链接允许我.format()在记录调用时使用样式消息格式,例如debug(),info()等。

4

1 回答 1

13

最近,我也在找那个。我想我在 SO 上得到了解决方案,但我手头只有最终的 url。这就是我所做的:

# http://plumberjack.blogspot.de/2010/10/supporting-alternative-formatting.html
class BraceMessage(object):
    def __init__(self, fmt, *args, **kwargs):
        self.fmt = fmt
        self.args = args
        self.kwargs = kwargs

    def __str__(self):
        return self.fmt.format(*self.args, **self.kwargs)

_F = BraceMessage

可以这样使用:

logger.debug(_F("foo {0} {quux}", bar, quux=baz))

格式化只会在评估消息的那一刻发生,因此如果禁用日志级别,您不会损失很多性能。上面那个片段的作者将这个(和其他一些实用程序)作为一个包提供:logutils.

于 2012-11-21T19:41:22.690 回答