Python日志格式化中如何将多个日志值整体左/右对齐?
Python日志多字段整体对齐的解决办法
用str.format风格格式(更便捷)
Python 3.2及以上版本的日志模块支持str.format语法,直接把三个字段拼接后指定对齐宽度即可:
import logging logging.basicConfig( format="{levelname:<8} {module}:{funcName}::{lineno:<100} {message}", style="{", level=logging.INFO ) def test_log(): logging.info("测试日志内容") test_log()
这里{module}:{funcName}::{lineno:<100}会将三个字段作为整体左对齐到100字符宽度,模块、函数名和行号之间不会出现多余空格。
老式%格式的替代方案
如果习惯使用老式%格式,需要先手动拼接三个字段,再传入日志格式中(日志模块不支持在%占位符里嵌套组合字段):
import logging import inspect logging.basicConfig( format="%(levelname)-8s %-100s %(message)", level=logging.INFO ) def test_log(): # 手动拼接模块、函数名、行号为一个字符串 combined_info = f"{__name__}:{test_log.__name__}::{inspect.currentframe().f_lineno}" logging.info("%s 这是测试日志", combined_info)
原写法无效的原因
老式%格式的日志占位符只能识别单个%()内的字段名,无法嵌套%()语法,所以%(%(module)s:%(funcName)s::%(lineno)s)-100s这种写法会被日志模块判定为无效语法。
内容的提问来源于stack exchange,提问作者vvvvv
相关产品推荐
相关产品推荐

