2009-11-20 3 views

Répondre

1

La journalisation appellera str() (qui utilise __str__() qui revient à __repr__() lorsqu'elle n'est pas définie). Cela est dû au fait que la structure de journalisation n'est pas sûre Unicode (c'est-à-dire que vous pouvez obtenir des erreurs lorsque vous essayez d'écrire Unicode sur les différents récepteurs de journalisation).

+4

Pas vrai. La journalisation formatera le message en utilisant 'str (msg)% args'. Dans Python 2.x, vous devez toujours implémenter '__str __()' et '__unicode__' si vous voulez fournir un comportement stringify. –

1
>>> class MyClass(object): 
...  def __str__(self): 
...   return "foobar" 
... 
>>> import logging 
>>> logging.error(MyClass()) 
ERROR:root:foobar 

Fonctionne comme prévu ?!

+0

Il s'avère que cela fonctionne réellement. – yanchenko

Questions connexes