Django 配置 LOGGING
由 瞳人
发布于 Oct. 7, 2015, 8:13 p.m.
0 个评论
在 DEBUG = Fasle 的情况下, 发送日志邮件到 ADMINS 中的 LOGGING 的配置.
在 Django 的正式部署时, 我们需要把 DEBUG
设置成 False
,
但是这样在出错时, 我们可能不能很方便看到 python 调用堆栈错误等信息,
而且我们也不会时时注意到服务出问题. 我们可以通过配置一下 Django 的
LOGGING 服务来帮助我们及时获得报错等日志信息.
设置方法
修改settings.py
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | DEBUG = False ... ADMINS = ( # ('Your Name', 'your_email@example.com'), ) MANAGERS = ADMINS DEFAULT_FROM_EMAIL = 'noreply@example.com' SERVER_EMAIL = 'admin@example.com' LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse', } }, 'handlers': { 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'mail_admins': { 'level': 'ERROR', # 仅当 DEBUG = False 时才发送邮件 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler', } }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, }, # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件 'django.security.DisallowedHost': { 'handlers': ['null'], 'propagate': False, }, } } |
当客户端访问网页时, 其 HTTP host header 不在 ALLOWED_HOSTS
中的时候, Django 会返回一个 400 响应,
并且会记录一个错误信息到 django.security.DisallowedHost
中. 但是我们常常清楚我们允许哪些域名访问, 所以
我们不需要这类报错邮件.
由于我一开始没有设置 django.security.DisallowedHost
不发送邮件, 导致了 mailgun 发送了很多邮件给我,
既浪费了邮件数量, 又导致我的邮箱收到几十封无用的邮件.
0 Comments