我一直在尝试使用简单的记录器,但我无法确定这里出了什么问题:
dlogger = logging.getLogger('Logger')
dlogger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
LOG_FILENAME, maxBytes=50000, backupCount=5)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
dlogger.addHandler(handler)
# ...
dlogger.info('%d successes. %d errors.', counter, error)
以上代码在运行时会产生此错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/logging/__init__.py", line 851, in emit
msg = self.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 724, in format
return fmt.format(record)
File "/usr/lib/python2.7/logging/__init__.py", line 467, in format
s = self._fmt % record.__dict__
ValueError: unsupported format character '(' (0x28) at index 3
同样的ValueError的其他任何问题似乎都没有解释我的情况。发生了什么事?!
不仅如此,而且在我运行具有此日志消息的脚本后,它会显示以下行为:
8 successes. 0 errors.
8 successes. 0 errors.
8 successes. 0 errors.
2015-01-15 16:30:07,539 - INFO - 8 successes. 0 errors.
记录器只能被触发一次,但由于某种原因,它会产生所有这些消息。
补充:即使我将消息简化为字符串(没有计入格式),它仍然会使用五到六个重复行来保存我的日志。
甚至后来添加:好的,我想我可以解释多个日志记录:我在调试时一直在重新加载模块,我认为它生成了多个记录器,即使我认为在重新加载期间我已经覆盖了前一个
答案 0 :(得分:0)
看这里:https://docs.python.org/2/library/logging.html#logging.Logger.debug
我在这一行猜测你的一个变量:
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
是空的。这会使格式字符串变成这样:%()会产生你描述的错误。
尝试打印出这些变量