是否还要在格式化程序中将多个日志记录值组合在一起,以便将它们作为单个项目填充?
我的日志格式化程序如下所示:
'%(asctime)s %(module)s:%(funcName)s:%(lineno)-15d %(levelname)-8s %(name)s: %(message)s'
我希望将模块,funcName和lineno字段填充在一起。使用此格式化程序运行会生成此输出:
2017-09-01 21:06:29,299 app:main:48 INFO pub: main start
2017-09-01 21:06:29,434 app:push_data:36 INFO pub: push data
但我希望它像:
2017-09-01 21:06:29,299 app:main:48 INFO pub: main start
2017-09-01 21:06:29,434 app:push_data:36 INFO pub: push data
答案 0 :(得分:0)
我最近遇到了类似问题,并通过制作自定义logging.Formatter
解决了这个问题。
在你的ini文件中,在格式化程序块下添加以下行:
class=my_log_formatter.MyLogFormatter
此外,您应该删除以format=
开头的行(如果存在)。它看起来像这样:
format=%(asctime)s %(name)-40s:%(lineno)-4s %(levelname)-8s %(message)s
然后创建一个新类:
import logging
class MyLogFormatter(logging.Formatter):
def format(self, record):
location = '%s.%s:%s' % (record.name, record.funcName, record.lineno)
msg = '%s %-60s %-8s %s' % (self.formatTime(record), location, record.levelname, record.msg)
record.msg = msg
return super(MyLogFormatter, self).format(record)