How to use modern string formatting options with P

2019-02-18 06:18发布

The Python logging tutorial says that the never ways of formatting are beyond the scope of the tutorial, without mentioning where to learn about it.

I would appreciate any examples/documentation that allow me to use .format() style message formatting in logging calls such as debug(), info(), etc.

1条回答
爷的心禁止访问
2楼-- · 2019-02-18 07:11

Recently, I was looking for that too. I think I got pointed to the solution here on SO, but I only have the final url at hand. This is what I do:

# 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

Can be used like this:

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

The formatting will only take place in the very moment the message is evaluated, so you don't lose lots of performance if a log level is disabled. The author of that snippet above made this (and some other utilities) available as a package: logutils.

查看更多
登录 后发表回答