got_request_exception only sends unhandled exceptions

Co-authored-by: David Lord <davidism@gmail.com>
This commit is contained in:
Tony De La Nuez 2021-01-30 16:36:47 -06:00 committed by David Lord
parent 45f98e9f1d
commit 7c9f74e6cc

View file

@ -440,18 +440,32 @@ The following signals exist in Flask:
.. data:: got_request_exception .. data:: got_request_exception
This signal is sent when an exception happens during request processing. This signal is sent when an unhandled exception happens during
It is sent *before* the standard exception handling kicks in and even request processing, including when debugging. The exception is
in debug mode, where no exception handling happens. The exception passed to the subscriber as ``exception``.
itself is passed to the subscriber as `exception`.
Example subscriber:: This signal is not sent for
:exc:`~werkzeug.exceptions.HTTPException`, or other exceptions that
have error handlers registered, unless the exception was raised from
an error handler.
def log_exception(sender, exception, **extra): This example shows how to do some extra logging if a theoretical
sender.logger.debug('Got exception during processing: %s', exception) ``SecurityException`` was raised:
.. code-block:: python
from flask import got_request_exception from flask import got_request_exception
got_request_exception.connect(log_exception, app)
def log_security_exception(sender, exception, **extra):
if not isinstance(exception, SecurityException):
return
security_logger.exception(
f"SecurityException at {request.url!r}",
exc_info=exception,
)
got_request_exception.connect(log_security_exception, app)
.. data:: request_tearing_down .. data:: request_tearing_down