Python中logging format如何优雅地对齐
[%(asctime)-15s] [%(levelname)s] - %(message)s (%(filename)s:%(lineno)s) 得到的结果是
[2018-11-02 09:56:14] [INFO] - start flask app (manage.py:21)
[2018-11-02 09:56:14] [WARNING] - * Debugger is active! (_internal.py:88)
[2018-11-02 09:56:14] [INFO] - * Debugger PIN: 323-630-998 (_internal.py:88)
加上右对齐(左对齐一样), [%(asctime)-15s] [%(levelname)8s] - %(message)s (%(filename)s:%(lineno)s) 得到的结果是
[2018-11-02 09:58:30] [ INFO] - start flask app (manage.py:21)
[2018-11-02 09:58:30] [ WARNING] - * Debugger is active! (_internal.py:88)
[2018-11-02 09:58:30] [ INFO] - * Debugger PIN: 323-630-998 (_internal.py:88)
而我想要得是
[2018-11-02 09:58:30] [INFO] - start flask app (manage.py:21)
[2018-11-02 09:58:30] [WARNING] - * Debugger is active! (_internal.py:88)
[2018-11-02 09:58:30] [INFO] - * Debugger PIN: 323-630-998 (_internal.py:88)
Python中logging format如何优雅地对齐
python<br>import logging<br>logging.basicConfig(level=logging.DEBUG, format="%(levelname)s %(message)s")<br>logging.debug('it works') # DEBUG it works<br>logging.addLevelName(logging.DEBUG, '[my debug name]{BLANK PADDINGS}')<br>logging.debug('it works') # [my debug name]{BLANK PADDINGS} it works<br>
在Python的logging模块里,想要对齐日志格式,用%格式化的话,可以在占位符里指定宽度。比如%(levelname)-8s里的-8就是左对齐占8个字符宽度,%(levelname)8s就是右对齐。
更现代的做法是用str.format()风格,像这样:
import logging
formatter = logging.Formatter(
'{asctime} | {levelname:^8} | {name:<15} | {message}',
style='{'
)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("This is a test message.")
logger.warning("Another message with different length.")
这里的:^8是居中对齐8位,:<15是左对齐15位。>是右对齐。用这个方式控制列宽和对齐更直观。
简单说,用str.format风格指定宽度和对齐符最清晰。
你要的是"]"之后的制表符\t
感谢感谢,是我要的答案,嘿嘿。
最好不要用制表符 自己算长度呗
类似的代码可以看 prettytable
为何不要用制表符呢?能详细说下吗

