gpt4 book ai didi

python - 服务器错误时邮件请求正文以及 Django Admin

转载 作者:太空狗 更新时间:2023-10-29 21:59:26 24 4
gpt4 key购买 nike

我在具有以下配置的 Django 中使用默认记录器:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'console'],
'level': 'ERROR',
'propagate': True,
},
}

因此,每当我收到 500 错误时,我都会正确地收到管理员电子邮件 ID 中的邮件,但它不会发送 POST 请求 JSON 数据。我发送请求如下:

curl -X POST -H 'Content-Type: application/json'  http://127.0.0.1/api/customer/ -d "{'username':'rajeevnith', 'frist_name': 'Rajeev', 'last_name':'Bahrdwaj'}"

我们如何配置 Django 记录器来发送这个请求体?

最佳答案

从 Django v3.1 开始,一种方法(可能是最快的)是简单地将您的类添加到您的 settings.py:

DEFAULT_EXCEPTION_REPORTER = 'package.log.CustomExceptionReporter'

然后在 log.py 中:

class CustomExceptionReporter(ExceptionReporter):
def get_traceback_data(self):
data = super().get_traceback_data()

#remove settings
del data['settings']

#add body if it exists
if self.request is not None:
if self.request.method == "POST":
try:
data['request_body'] = request.body
except:
data['request_body'] = None


return data

关于python - 服务器错误时邮件请求正文以及 Django Admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com