pythonexceptionloggingerror-handlingpython-logging

Log exception with traceback in Python


How can I log my Python exceptions?

try:
    do_something()
except:
    # How can I log my exception here, complete with its traceback?

Solution

  • Use logging.exception from within the except: handler/block to log the current exception along with the trace information, prepended with a message.

    import logging
    LOG_FILENAME = '/tmp/logging_example.out'
    logging.basicConfig(filename=LOG_FILENAME, level=logging.DEBUG)
    
    logging.debug('This message should go to the log file')
    
    try:
        run_my_stuff()
    except:
        logging.exception('Got exception on main handler')
        raise
    

    Now looking at the log file, /tmp/logging_example.out:

    DEBUG:root:This message should go to the log file
    ERROR:root:Got exception on main handler
    Traceback (most recent call last):
      File "/tmp/teste.py", line 9, in <module>
        run_my_stuff()
    NameError: name 'run_my_stuff' is not defined