2010-11-17 5 views
1

J'ai une application les met en place l'enregistrement à l'aide:exploitation forestière Python IndexError: liste des index hors de portée

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

puis appelez

logging.debug("My Message") 

etc. pour se connecter messeages. Ce beau travail dans la plupart de ma demande, mais pour un module particulier, je reçois cette erreur

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 

Est-ce que quelqu'un a des idées sur ce qui pourrait être la cause? Ou où d'autre à regarder pour lire à ce sujet. J'ai déjà lu le code du module de journalisation et les pages de référence de python

+0

quel est le niveau de journalisation? – mossplix

+0

logging.DEBUG .J'ai vérifié cela en ajoutant logging.root.getEffectiveLevel() au-dessus d'elle.Il retourne 10, ce qui est la journalisation. DEBUG –

+0

Message d'erreur très étrange Il n'y a pas de liste dans cette partie du code du module de journalisation Je devrais le mettre dans un débogueur – mjhm

Répondre

0

Quelque chose semble très mal à l'installation - il est difficile de voir comment une ligne comme

while logger: 

générerait un IndexError.

Donc, supprimez tous les fichiers .pyc et .pyo de votre système (y compris dans les dossiers stdlib) et réessayez. Assurez-vous qu'aucun de vos modules n'a le même nom que les modules de la bibliothèque standard.

De plus, quelle version de Python utilisez-vous et sur quelle plateforme?

Mise à jour: Si vous utilisez intégré dans un programme C++, ou avec des extensions C, il est tout à fait possible que du code C ou C++ est en train d'écraser la mémoire, conduisant à la IndexError dans un endroit le plus inattendu. Pouvez-vous reproduire dans un environnement pur-Python?

Sinon, je crains que le problème puisse être dans le code C/C++. Il est également plus facile d'écraser des choses dans des environnements multithread :-(

+0

Python 2.6.5 sur Windows XP. J'ai essayé votre suggestion, toujours eu le même problème. –

+0

Merci, on dirait que c'était un problème avec le côté C++ des choses. –

0

Le site de Doug Helmann a some guidance on using Python's logging module.

Il y a aussi quelques exemples à télécharger ici, que je n'ai pas essayés.

+0

Merci, mais j'ai déjà lu ceci et ça ne m'aide pas avec mon problème, je penche pour que ce soit un bug dans le module de journalisation de python maintenant –

+0

Je suppose que vous n'avez rien trouvé dans votre module qui pourrait en être la cause? – Raz

+0

Quel est le numéro de version complète de Python? Si c'est moins de 2.6.6, essayez de mettre à jour, et voyez si vous le frappez toujours. –

Questions connexes