【发布时间】:2012-11-07 16:29:01
【问题描述】:
我使用logging 模块在我的应用程序上记录消息。
我经常会遇到格式字符串或参数的错误导致错误的情况,例如:
import logging
my_log = logging.getLogger("MyLog")
# this is obviously wrong
my_log.info('%d', "abc")
结果是一个类似下面的错误:
Traceback (most recent call last):
File "/usr/lib64/python2.6/logging/__init__.py", line 776, in emit
msg = self.format(record)
File "/usr/lib64/python2.6/logging/__init__.py", line 654, in format
return fmt.format(record)
File "/usr/lib64/python2.6/logging/__init__.py", line 436, in format
record.message = record.getMessage()
File "/usr/lib64/python2.6/logging/__init__.py", line 306, in getMessage
msg = msg % self.args
TypeError: %d format: a number is required, not str
但是,它只显示日志模块内的回溯;它没有告诉我代码中发生错误的位置。
有什么办法可以解决吗?
【问题讨论】:
-
stackoverflow.com/questions/6898674/… 看起来和你有类似问题的人;有一个答案,其中包含将日志记录处理程序子类化以添加更好的堆栈跟踪的代码(包括您调用它的位置)。
-
我无法重现您的错误,但也许将回溯限制设置为更高的值会有所帮助。
import sys; sys.traceback_limit = 10.
标签: python debugging logging error-handling