在Python日志格式化程序中部分字符串格式化
问题描述:
我正在寻找一种在Python日志格式化程序中执行部分字符串格式化的方法。
当试图定义一个格式化的方式如下:
在Python日志格式化程序中部分字符串格式化
formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))
我会得到一个类型错误使用“格式要求的映射”,这是合理的解释无法找到“levelname”和'信息'。
当然,我希望'levelname'和'message'保持未格式化的日志框架来处理。
依我之见,有解决这个问题的另外两种方式:
-
format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')
不过,我觉得这两种解决方案有点丑,我相信有必须是更好的方式来格式化部分字符串 - 无论是在Python中,还是在Python内置日志框架中使用。
任何想法?
答
试试这个:
formatter = logging.Formatter('[num-%d] %%(levelname)s %%(message)s' % (num,))
你得给Formatter
方法的字符串%(...)s
领域。 %%
将解释为%
,因此可以使用。
+0
很好,谢谢! – amito
重复http://stackoverflow.com/questions/4928526/python-format-string – Stefano