将动态字符串添加到记录器格式

时间:2013-10-22 06:39:19

标签: python logging formatting

我正在尝试向格式化程序添加动态字符串,但无法执行此操作。

这是代码。

import logging

logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('spam.log')

var = 'some vaue'
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.error('error message')

输出:

Traceback (most recent call last):
  File "try.py", line 8, in <module>
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)
TypeError: format requires a mapping

这里

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s %s' % var)

是导致错误的原因,我真的需要为这种格式添加一个varible var。

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s simple_example')

工作正常。

1 个答案:

答案 0 :(得分:1)

这将有效

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s {0}'.format(var))

您可以在此处了解更多信息 http://docs.python.org/2/library/string.html#format-examples