Python日志错误:列表索引超出范围

1 投票
2 回答
2596 浏览
提问于 2025-04-16 07:12

我有一个应用程序,它是通过以下方式设置日志记录的:

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++代码上。在多线程环境中搞乱东西也更容易 :-(

撰写回答