Pythonlogging.Formatter():有什么方法可以固定字段的宽度并左/右对齐吗?

2023-12-31

以下是日志记录教程中的日志记录示例:

2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample - INFO - info message
2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample - ERROR - error message
2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message

这种尾随的锯齿状让我烦恼不已。

我真的希望能够像这样格式化:

2005-03-19 15:38:55,977 - simpleExample -    DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample -     INFO - info message
2005-03-19 15:38:56,054 - simpleExample -  WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample -    ERROR - error message
2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message

我已经对我的记录器尝试了以下操作,但不起作用(缩写代码):

fmt = "{0:>8}"
formatter = logging.Formatter("%(asctime)s %(filename)s: " + fmt.format("%(levelname)s") + " %(message)s", "%Y/%m/%d %H:%M:%S")

这执行得很好并一如既往地打印级别名称,但它没有实现宽度格式。

Ex.

logger.debug("testing debug message")
logger.info("some random info")
logger.critical("oh crap!")

实际结果:

2013/12/16 13:43:10 logtester: DEBUG testing debug message
2013/12/16 13:43:10 logtester: INFO some random info
2013/12/16 13:43:10 logtester: CRITICAL oh crap!

期望的结果:

2013/12/16 13:43:10 logtester:    DEBUG testing debug message
2013/12/16 13:43:10 logtester:     INFO some random info
2013/12/16 13:43:10 logtester: CRITICAL oh crap!

在logging.Formatter()中实现字段的固定宽度有什么提示吗?

使用Python 2.6.9。

EDIT:使用另一种方法的第二次尝试:

formatter = logging.Formatter("%(asctime)s %(filename)s: " + "%(foo)5s" % {"foo" : "(%(levelname)s)"} + " %(message)s", "%Y/%m/%d %H:%M:%S")

仍然导致:

2013/12/16 13:43:10 logtester: DEBUG testing debug message
2013/12/16 13:43:10 logtester: INFO some random info
2013/12/16 13:43:10 logtester: CRITICAL oh crap!

也许我只是在做一些愚蠢的事情。


字段宽度可以通过在类型说明符前面添加数字来指定:

>>> "%(foo)8s" % {'foo': 'bar'}
'     bar'

您可以在传递给格式化程序的格式字符串中使用它。对于你的例子,那就是:

"%(asctime)s %(filename)s: %(levelname)8s %(message)s"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pythonlogging.Formatter():有什么方法可以固定字段的宽度并左/右对齐吗? 的相关文章

随机推荐