我正在使用python的日志格式化程序来格式化日志记录,并且我的fmt值为
fmt = "[%(filename)s:%(lineno)s] %(message)s"
我想要的是将[[file.py:20]”扩展到10个字符的宽度(例如)。如果这是一个简单的值,但是有什么办法可以将整个结构拉伸到指定的长度?我想要类似的东西:
tmp = "[%(filename)s:%(lineno)s]" fmt = "%(tmp)10s %(message)s"
我想知道是否可以使用字符串格式设置,或者是否可以以某种方式欺骗python的格式化程序以获取我想要的。
选项1
从这里开始:http : //docs.python.org/library/logging.html#formatter- objects
您将创建自己的自定义子类,Formatter该子类将提供自己的唯一format方法。
Formatter
format
然后,您必须确保setFormatter()每个人都调用,Handlers以便他们使用新的格式化程序。
setFormatter()
Handlers
选项2
使用其他属性创建您自己的LogRecord子类。
子类Logger和重写makeRecord以创建的新子类LogRecord。
Logger
makeRecord
LogRecord
提供使用此新属性值的自定义格式。