logging.debug(msg[, *args[, **kwargs]])
[...]
There are two keyword arguments in kwargs which are inspected: exc_info which, if it does not evaluate as false, causes exception information to be added to the logging message. If an exception tuple (in the format returned by sys.exc_info()) is provided, it is used; otherwise, sys.exc_info() is called to get the exception information.
I don't get what this is trying to do. I have this code:
try:
f = urllib2.urlopen(url)
except urllib2.HTTPError as ex:
logger.error("Unable to retrieve profile from facebook (access_token='%r')" % access_token,
exc_info=ex)
which ends up logging:
[...] ERROR _get_profile Unable to retrieve profile from facebook (access_token='u'[token elided]'')
so what is the exc_info doing? What "exception information" is being added to the message? Am I just calling this wrong?
> logging.debug(msg[, *args[, **kwargs]])
> [...]
> There are two keyword arguments in kwargs which are inspected: exc_info
> which, if it does not evaluate as false, causes exception information to
> be added to the logging message. If an exception tuple (in the format
> returned by sys.exc_info()) is provided, it is used; otherwise,
> sys.exc_info() is called to get the exception information.
> I don't get what this is trying to do. I have this code:
> try:
> f = urllib2.urlopen(url)
> except urllib2.HTTPError as ex:
> logger.error("Unable to retrieve profile from facebook
> (access_token='%r')" % access_token,
> exc_info=ex)
> which ends up logging:
> [...] ERROR _get_profile Unable to retrieve profile from facebook
> (access_token='u'[token elided]'')
> so what is the exc_info doing? What "exception information" is being
> added to the message? Am I just calling this wrong?
I think whatever the formatter's formatException() makes out of the (exception_type, exception_value, traceback) tuple lands in the logfile:
... except: logging.error("yadda", exc_info=True)
...
ERROR:root:yadda
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
Duh, I figured out what's going on. I'm using a custom Formatter class, which overrides format(). It's the job of format() to handle this, and ours doesn't!