How do I log an exception at warning- or info-level with traceback using the python logging framework?

From the logging documentation:

There are three keyword arguments in kwargs which are inspected: exc_info, stack_info, and extra.

If exc_info does not evaluate as false, it causes exception information to be added to the logging message. If an exception tuple (in the format returned by sys.exc_info()) or an exception instance is provided, it is used; otherwise, sys.exc_info() is called to get the exception information.

So do:

logger.warning("something raised an exception:", exc_info=True)

Here is one that works (python 2.6.5).

logger.critical("caught exception, traceback =", exc_info=True)