chore: Log errors handled by RequestExceptionHandler (#8013)
- Logging this info is invaluable when using logs to track down the reason why a particular request failed.
This commit is contained in:
@@ -9,11 +9,14 @@ module RequestExceptionHandler
|
|||||||
|
|
||||||
def handle_with_exception
|
def handle_with_exception
|
||||||
yield
|
yield
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound => e
|
||||||
|
log_handled_error(e)
|
||||||
render_not_found_error('Resource could not be found')
|
render_not_found_error('Resource could not be found')
|
||||||
rescue Pundit::NotAuthorizedError
|
rescue Pundit::NotAuthorizedError => e
|
||||||
|
log_handled_error(e)
|
||||||
render_unauthorized('You are not authorized to do this action')
|
render_unauthorized('You are not authorized to do this action')
|
||||||
rescue ActionController::ParameterMissing => e
|
rescue ActionController::ParameterMissing => e
|
||||||
|
log_handled_error(e)
|
||||||
render_could_not_create_error(e.message)
|
render_could_not_create_error(e.message)
|
||||||
ensure
|
ensure
|
||||||
# to address the thread variable leak issues in Puma/Thin webserver
|
# to address the thread variable leak issues in Puma/Thin webserver
|
||||||
@@ -41,6 +44,7 @@ module RequestExceptionHandler
|
|||||||
end
|
end
|
||||||
|
|
||||||
def render_record_invalid(exception)
|
def render_record_invalid(exception)
|
||||||
|
log_handled_error(exception)
|
||||||
render json: {
|
render json: {
|
||||||
message: exception.record.errors.full_messages.join(', '),
|
message: exception.record.errors.full_messages.join(', '),
|
||||||
attributes: exception.record.errors.attribute_names
|
attributes: exception.record.errors.attribute_names
|
||||||
@@ -48,6 +52,11 @@ module RequestExceptionHandler
|
|||||||
end
|
end
|
||||||
|
|
||||||
def render_error_response(exception)
|
def render_error_response(exception)
|
||||||
|
log_handled_error(exception)
|
||||||
render json: exception.to_hash, status: exception.http_status
|
render json: exception.to_hash, status: exception.http_status
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def log_handled_error(exception)
|
||||||
|
logger.info("Handled error: #{exception.inspect}")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user