django异常日志_5分钟教你学会Django系统错误监控
話不多說,直入正題。
先上圖,看一下監(jiān)控的效果。
如下是監(jiān)控我們網(wǎng)站系統(tǒng)錯(cuò)誤的郵件。包含了請(qǐng)求的url地址,以及詳細(xì)的異常信息。
一、監(jiān)控所有的request請(qǐng)求
如何實(shí)現(xiàn)系統(tǒng)監(jiān)控,自動(dòng)發(fā)送錯(cuò)誤日志的郵件呢?
只需配置配置settings文件即可。
1.設(shè)置發(fā)送郵件配置信息
郵件會(huì)發(fā)送到ADMINS設(shè)定的郵件列表中。SERVER_EMAIL ='sender@qq.com'
DEFAULT_FROM_EMAIL ='sender@qq.com'
ADMINS = (('receiver','receiver@qq.com'),)
EMAIL_HOST ='smtp.exmail.qq.com'
EMAIL_HOST_USER ='sender@qq.com'
EMAIL_HOST_PASSWORD ='123456'
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
2.配置LOGGING
1)配置mail_admin的handler
level為日志級(jí)別
django.utils.log.AdminEmailHandler為django處理系統(tǒng)日志發(fā)送郵件的handler
在沒有配置filter參數(shù)情況下,默認(rèn)發(fā)送系統(tǒng)5XX狀態(tài)的錯(cuò)誤日志'handlers': {
'mail_admin': {
'level':'ERROR',
'class':'django.utils.log.AdminEmailHandler',
'include_html':False,
}
}
2)配置django.request模塊的logger
將django的request模塊配置如上的mail_admin handler'loggers': {
'django.request': {
'handlers': ['default','mail_admin'],
'propagate':True,
'level':'ERROR',
},
}
二、監(jiān)控非request請(qǐng)求
如何監(jiān)控例如系統(tǒng)的定時(shí)任務(wù)等非用戶發(fā)起的功能模塊,我們可以自定義一個(gè)decorator來解決這個(gè)問題。
utils.send_exception_email(email_list,title,exc)為發(fā)送郵件的方法,可以自己實(shí)現(xiàn),非常簡(jiǎn)單def decorator_error_monitor(title):
def wrap(f):
def wrapped_f(*args,**kwargs):
try:
result = f(*args,**kwargs)
return result
except:
exc = traceback.format_exc()
utils.send_exception_email(email_list,title,exc)
raise Exception(exc)
return wrapped_f
return wrap
對(duì)需要監(jiān)控的方法使用decorator@decorator_error_monitor("清算錯(cuò)誤")
def do_settlement(users):
for user in users:
process_settlement_for_one_user(user)
監(jiān)控效果如下圖所示:
小結(jié)
以上監(jiān)控方法,簡(jiǎn)單實(shí)用,無需開發(fā)額外的日志監(jiān)控系統(tǒng),可以在第一時(shí)間發(fā)現(xiàn)系統(tǒng)的問題,并得知系統(tǒng)的錯(cuò)誤日志,幫助快速的定位問題。
總結(jié)
以上是生活随笔為你收集整理的django异常日志_5分钟教你学会Django系统错误监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业微信怎么加快捷回复? 企业微信新增快
- 下一篇: java动态网站框架_大型网站动态应用系