장고 500 에러시 어드민 메일로 오류내용이 발송되지 않습니다.
소스코드내에서 logging.error("오류내용 출력")
과 같이 강제로 로그를 남길 경우에는 어드민 메일로 메일이 잘 발송됩니다. 다만 500 오류처럼 장고내에서 오류가 발생할 경우에는 파일로그만 생기고 이메일로는 전달이 되지 않는 현상이 있습니다.
로그를 강제로 출력할 경우 이메일이 잘 전달되는 것으로 봐서 설정에 문제가 있는 것 같지는 않구요..
로깅 설정은 다음과 같습니다.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
...
'handlers': {
...
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
...
},
'loggers': {
'django': {
'handlers': ['console', 'mail_admins', 'file'],
'level': 'INFO',
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
'pybo': {
'handlers': ['console', 'file', 'mail_admins'],
'level': 'INFO',
},
}
}
도대체 무엇이 문제일까요?
박응용 님
469
M 2020년 7월 8일 1:40 오후
1개의 답변이 있습니다. 1 / 1 Page
설정에 문제가 없었지만 500 에러시 다음처럼 urls.py 파일에 handler500 핸들러를 따로 구현한게 문제였습니다.
handler500 = 'common.views.common_views.server_error'
handler500 핸들러로 500 오류를 처리하게 될 경우 500 오류코드가 뭉개지는 현상이 발생할 수 있습니다.
그래서 다음처럼 response 함수의 매개변수 status에 500 오류코드를 함께 전달해야 합니다.
다음은 handler500 에 의해 실행되는 함수입니다.
def server_error(request):
"""
500 Server Error
"""
return render(request, 'common/500.html', {}, status=500)
status=500 을 설정하고 해결되었습니다.
박응용 님
M 2020년 7월 8일 3:30 오후