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)
ERROR:root:I did not expect this
Now use exception level:
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.