python里的formatter_如何正确对齐Python日志中的级别字段.Formatter
I'm currently trying to right align the logging level field in my Python logger so that output such as:[2011-10-14 13:47:51] [DEBUG] --- starting... (smtphandlers.py:96)[2011-10-14 13:47:51] [INFO] --
I'm currently trying to right align the logging level field in my Python logger so that output such as:
[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)
instead looks like:
[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)
The format line for the first block is:
logging.Formatter("[%(asctime)s] [%(levelname)s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
If I know the max level length is 8 (eg: CRITICAL), then I'll right align to 8 spaces.
I'm trying to figure out how to achieve this. The following fails because "%(levelname)s" is more than 8 characters (the substitution doesn't happen until later). If I use something like "{0:>20}".format"%(levelname)s", then it works, but that is more padding than I need or want.
logging.Formatter("[%(asctime)s] [" + "{0:>8}".format"%(levelname)s" + "] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
Short of subclassing Formatter, anyone have a way to achieve this?
解决方案
Like this:
logging.Formatter("[%(asctime)s] [%(levelname)8s] --- %(message)s (%(filename)s:%(lineno)s)", "%Y-%m-%d %H:%M:%S")
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)