Vinay Sajip added the comment:
It is by design that logging accepts arbitrary objects, rather than just
strings, see
docs.python.org/howto/logging.html#arbitrary-object-messages
and, as documented, the instance's __str__ will be called by logging calling
str() on the instance. If people are being lazy and doing
logging.exception(exc) where exc is an exception instance, then they need to
change their code. Recall that on Python 2.x, just doing a + b can trigger a
UnicodeError because of implicit bytes->Unicode conversions which use ASCII as
a default (this is just how Python 2.x works - nothing to do with logging). An
arbitrary exception's str() method may or may not be smart with respect to this
sort of behaviour. I think the answer is for people to be more aware of Unicode
issues and how Python 2.x deals with mixed Unicode and byte data. If the _fmt
string you are referring to is the Formatter instance attribute, you can
control that by passing whatever you want to the Formatter - a Unicode string,
if you wish.
The normal logging exception handling is as per Éric's example (though of
course you can have placeholders and arguments passed to the exception call, as
in
logger.exception('Problem with %r', 'specific data')
I'm closing as invalid, because the example you quoted as working is how people
are supposed to use it.
----------
resolution: -> invalid
status: open -> closed
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17155>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com