__unicode __(self)不会通过日志记录调用

时间:2009-11-20 11:03:19

标签: python logging

长话短说:

# this works as expected:
logging.error(my_object.__unicode__())

# this doesn't:
logging.error(my_object)

__str__(self)相同的结果。 为什么呢?

编辑:__str__确实有效。

2 个答案:

答案 0 :(得分:1)

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

按预期工作?!

答案 1 :(得分:1)

记录将调用str()(使用__str__(),当__repr__()未定义时,{{1}}会回退到{{1}}。这是因为日志记录框架不是Unicode安全的(即,当您尝试将Unicode写入各种日志记录接收器时,您可能会收到错误。)