我目前正在尝试右对齐 Python 记录器中的日志记录级别字段,以便输出如下:
[2011-10-14 13:47:51] [DEBUG] --- starting... (smtphandlers.py:96)
[2011-10-14 13:47:51] [INFO] --- first things first... (smtphandlers.py:97)
[2011-10-14 13:47:51] [WARNING] --- about to end... (smtphandlers.py:98)
[2011-10-14 13:47:51] [DEBUG] --- ending (smtphandlers.py:99)
相反看起来像:
[2011-10-14 13:47:51] [ DEBUG] --- starting... (smtphandlers.py:96)
[2011-10-14 13:47:51] [ INFO] --- first things first... (smtphandlers.py:97)
[2011-10-14 13:47:51] [ WARNING] --- about to end... (smtphandlers.py:98)
[2011-10-14 13:47:51] [ DEBUG] --- ending (smtphandlers.py:99)
第一个块的格式行是:
logging.Formatter("[%(asctime)s] [%(levelname)s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
如果我知道最大级别长度是 8(例如:CRITICAL),那么我将右对齐到 8 个空格。
我正在尝试弄清楚如何实现这一目标。以下操作失败,因为“%(levelname)s”超过 8 个字符(替换直到稍后才会发生)。如果我使用类似“{0:>20}”.format“%(levelname)s”的内容,那么它可以工作,但这比我需要或想要的填充更多。
logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
除了子类化 Formatter 之外,有人有办法实现这一点吗?
像这样:
logging.Formatter("[%(asctime)s] [%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
PS:如果您希望 INFO 左对齐,您可以使用[%(levelname)-8s]
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)