Roy Smith wrote: > In http://docs.python.org/release/2.6.7/library/logging.html, it says: > > 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: >> import logging >>> logging.basicConfig() >>> try: 1/0 ... except: logging.error("yadda") ... ERROR:root:yadda >>> try: 1/0 ... 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 >>> class Formatter(logging.Formatter): ... def formatException(self, *args): return "OOPS" ... >>> logging._handlers.keys()[0].setFormatter(Formatter()) # ;) >>> try: 1/0 ... except: logging.error("yadda", exc_info=True) ... yadda OOPS -- http://mail.python.org/mailman/listinfo/python-list