2010-11-17 20 views
1

我有一個應用程序的建立使用記錄:Python記錄IndexError:列表索引超出範圍

logging.basicConfig(level=logging_level, format=format_string, filename=log_file, filemode='a') 

然後調用

logging.debug("My Message") 

等登錄messeages。在大多數我的應用程序的這項工作很好,但隨後特定模塊我得到這個錯誤

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參考頁面

+0

whats the logging_level? – mossplix 2010-11-17 13:27:51

+0

logging.DEBUG。我通過在它上面添加logging.root.getEffectiveLevel()來驗證它,它返回10,它是日誌記錄。 DEBUG – 2010-11-17 13:31:23

+0

非常奇怪的錯誤信息,在日誌模塊代碼的那部分沒有列表,我必須把它放在一個調試器中,這是一個多線程應用程序嗎? – mjhm 2010-11-17 14:37:36

回答

0

有些東西似乎很不對您的安裝 - 這是很難看怎麼樣

while logger: 

線會產生一個IndexError

因此,請從系統中刪除所有.pyc.pyo文件(包括stdlib文件夾中)並重試。確保沒有任何模塊與標準庫中的任何模塊具有相同的名稱。

此外,您正在使用什麼版本的Python,以及在哪個平臺上?

更新:如果您使用的是嵌入式的C++程序,或C擴展,它很可能是一些C或C++代碼重挫內存,導致IndexError在最意想不到的地方。

您可以在純Python環境中重現嗎?如果不是,我擔心這個問題可能出現在C/C++代碼中。它在多線程環境中更容易被破壞:-(

+0

Python 2.6.5。試過你的建議,仍然有同樣的問題。 – 2010-11-17 15:14:14

+0

謝謝,看起來這是事情的c + +方面的問題。 – 2010-11-19 16:00:32

0

Doug Helmann的網站有some guidance on using Python's logging module

還有一些例子可以下載,我還沒有嘗試過。

+0

謝謝,但是我已經閱讀過這個,並且這對我的問題沒有幫助,我傾向於將它當作python日誌記錄模塊中的一個bug。 – 2010-11-17 14:14:54

+0

我認爲你沒有發現你的模塊可能是什麼原因呢? – Raz 2010-11-17 14:26:27

+0

什麼是Python的完整版本號?如果它小於2.6.6,請嘗試更新,看看你是否仍然擊中它。 – 2010-11-17 14:36:57

相關問題