# How To Log Uncaught Exceptions In Python?

For this, you can use the `sys.excepthook` that allows us to attach a handler
for any unhandled exception:

```python
#Creating a logger
logger = logging.getLogger(__name__)
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

#Creating a handler
def handle_unhandled_exception(exc_type, exc_value, exc_traceback):
    if issubclass(exc_type, KeyboardInterrupt):
				#Will call default excepthook
        sys.__excepthook__(exc_type, exc_value, exc_traceback)
        return
		#Create a critical level log message with info from the except hook.
    logger.critical("Unhandled exception", exc_info=(exc_type, exc_value, exc_traceback))
#Assign the excepthook to the handler
sys.excepthook = handle_unhandled_exception
```

First, you will create a logger that will take care of your exceptions.

Then create a handler `handle_unhandled_exception` that you will later attach to
the hook. Then call the `__excepthook__` provided by the `sys` module. This
method is invoked every time the exception is uncaught.

Use the info from the hook to create a log message and assign this handler to
the `sys.excepthook`.

You can learn more info about `sys.excepthook` in
the [offical documentation.](https://docs.python.org/3/library/sys.html#sys.excepthook).

If you are new to logging in Python, please feel free read our [Introduction to Python logging](https://betterstack.com/community/guides/logging/how-to-start-logging-with-python/) and learn more.

[summary]
## 🔭 Want to centralize and monitor your python logs?
Go to [Logtail](https://betterstack.com/logtail/) and start your log management in 5 minutes.
[/summary]
![Better Uptime Dashboard](https://imagedelivery.net/xZXo0QFi-1_4Zimer-T0XQ/08b5b6cb-f57b-4ff4-cf1d-b303b8a94e00/public =1247x768)
