By skimming Python documentation today, I realized that logging module provides an exception level. Its goal is to show you a stacktrace when you call it from an except block.
You may have noticed that if you log an exception with level error, you only get exception message:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
def send_unexpected_exception():
raise Exception("I did not expect this")
logging.basicConfig(level=logging.DEBUG)
try:
send_unexpected_exception()
except Exception as e:
logging.error(e)
Returns:
ERROR:root:I did not expect this
Now use exception level:
It returns:
ERROR:root:I did not expect this
Traceback (most recent call last):
File "logging_exception.py", line 12, in <module>
send_unexpected_exception()
File "logging_exception.py", line 7, in send_unexpected_exception
raise Exception("I did not expect this")
Exception: I did not expect this
I think it’s an interesting way to provide feedback and context if your app raises an unexpected exception.