Django如何记录错误和显示消息

2024-04-18 22:56:04 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我们使用django logger记录错误并向管理员发送电子邮件。你知道吗

# settings.py
'handlers': {
            'mail_admins': {
                'level': 'ERROR',
                'class': 'django.utils.log.AdminEmailHandler',
            },
            'applogfile': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
            }
       },
'loggers': {
    'django': {
                'handlers': ['applogfile', 'mail_admins'],
                'level': 'ERROR',
            },
        }

我们想创建自定义用户错误页,所以我们创建了一个中间件来处理异常:

# exceptionMiddleware.py

class ExceptionMiddleware:
    def process_exception(self, request, exception):
        message = str(exception) if isinstance(exception, BusinessLogicException) else "Sorry, we encountered an unexpected error"
        return HttpResponse( message )

这个中间件的问题是日志机制停止工作。我怎样才能得到安装在设置.py逃避例外middleware.py?你知道吗

谢谢!你知道吗


Tags: 中间件djangopymessagehandlers错误记录exception
1条回答
网友
1楼 · 发布于 2024-04-18 22:56:04

多亏了威廉的暗示,答案如下:

用“抱歉,我们遇到错误”设置自定义错误消息

#urls.py

handler500 = 'mysite.views.my_custom_error_view'

然后在中间件中,只返回BusinessLogicException

#exceptionMiddleware.py

class exceptionMiddleware:
    def process_exception(self, request, exception):
        if not isinstance(exception, BusinessLogicException):
            return None
        return HttpResponse(str(exception))

相关问题 更多 >