Python日志错误:列表索引超出范围
我有一个应用程序,它是通过以下方式设置日志记录的:
logging.basicConfig(level=logging_level, format=format_string, filename=log_file, filemode='a')
然后调用
logging.debug("My Message")
等等来记录消息。这在我大部分应用程序中都能正常工作,但在某个特定模块中,我遇到了这个错误
File "C:\path\to\my\module\MyModule.py", line 53, in __init__
logging.debug("__init__ called")
File "C:\Python26\Lib\logging\__init__.py", line 1481, in debug
root.debug(*((msg,)+args), **kwargs)
File "C:\Python26\Lib\logging\__init__.py", line 1035, in debug
if self.isEnabledFor(DEBUG):
File "C:\Python26\Lib\logging\__init__.py", line 1242, in isEnabledFor
return level >= self.getEffectiveLevel()
File "C:\Python26\Lib\logging\__init__.py", line 1230, in getEffectiveLevel
while logger:
IndexError: list index out of range
有没有人知道这可能是什么原因?或者我可以去哪里查阅相关信息。我已经看过了日志模块的代码和Python的参考页面。
2 个回答
0
Doug Helmann的网站上有一些关于如何使用Python的日志模块的指导。
那里还有一些可以下载的示例,不过我还没有试过。
0
你的安装似乎有些问题 - 很难理解像下面这样的代码
while logger:
怎么会产生一个 IndexError
错误。
所以,建议你把系统里所有的 .pyc
和 .pyo
文件都删除掉(包括标准库文件夹里的),然后再试一次。确保你的模块名字和标准库里的模块名字没有重复。
另外,你用的是什么版本的Python?是在什么平台上运行的呢?
更新:如果你是在一个C++程序里嵌入Python,或者使用了C扩展,那很有可能是某些C或C++代码在搞乱内存,导致在意想不到的地方出现 IndexError
。
你能在一个纯Python环境中重现这个问题吗?如果不能,那我担心问题可能出在C/C++代码上。在多线程环境中搞乱东西也更容易 :-(