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 <rep...@bugs.python.org>
<http://bugs.python.org/issue17155>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to