在 python 日志记录中的括号后填充字符串占位符



我目前在 Python 中的日志记录字符串设置如下:

logging.basicConfig(
format='[%(asctime)s] [%(levelname)-5s] %(message)s',
level=logging.DEBUG
)

这会产生类似的东西:

[2018-06-15 10:54:15,021] [DEBUG] debug
[2018-06-15 10:54:15,022] [INFO ] info
[2018-06-15 10:54:15,022] [ERROR] error

因此,级别名称的填充出现在方括号。 相反,我想在括号有填充,所以它看起来像这样:

[2018-06-15 10:54:15,021] [DEBUG] debug
[2018-06-15 10:54:15,022] [INFO]  info
[2018-06-15 10:54:15,022] [ERROR] error

不幸的是,似乎没有在"%"和"s"之间放置额外字符(如 [](的语法,我也无法将格式字符串传递给 basicConfig(( 之前填充格式字符串。有没有办法实现我想要的?

好的,我找到了一个涉及自定义LogRecordFactory的解决方案。 这里供参考:

logging.basicConfig(
format='[%(asctime)s] %(levelname_brackets)-7s %(message)s',
level=logging.DEBUG
)
old_factory = logging.getLogRecordFactory()
def record_factory(*args, **kwargs):
record = old_factory(*args, **kwargs)
record.levelname_brackets = '[{}]'.format(record.levelname)
return record
logging.setLogRecordFactory(record_factory)

如果有更简单的方法,我会很感兴趣。

最新更新