代码之家  ›  专栏  ›  技术社区  ›  yanchenko

_ unicode_uuuu(self)不会被日志调用

  •  0
  • yanchenko  · 技术社区  · 15 年前

    长话短说:

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

    结果与 __str__(self) . 为什么?

    编辑: __str__ 实际工作。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Aaron Digulla    15 年前

    日志记录将调用 str() (使用) __str__() 又回到了 __repr__() 如果没有定义)。这是因为日志框架不是Unicode安全的(即,当您尝试将Unicode写入各个日志接收器时,可能会出错)。

        2
  •  1
  •   Ferdinand Beyer    15 年前
    >>> class MyClass(object):
    ...     def __str__(self):
    ...         return "foobar"
    ...
    >>> import logging
    >>> logging.error(MyClass())
    ERROR:root:foobar
    

    按预期工作?你说什么?