专栏首页Python专栏Python | 5分钟教你学会Django系统错误监控

Python | 5分钟教你学会Django系统错误监控

来源:http://www.jianshu.com/p/42e4287ffeda

话不多说,直入正题。

先上图,看一下监控的效果。

如下是监控我们网站系统错误的邮件。包含了请求的url地址,以及详细的异常信息。

一、监控所有的request请求

如何实现系统监控,自动发送错误日志的邮件呢?只需配置配置settings文件即可。

1.设置发送邮件配置信息

邮件会发送到ADMINS设定的邮件列表中。

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为日志级别

django.utils.log.AdminEmailHandler为django处理系统日志发送邮件的handler

在没有配置filter参数情况下,默认发送系统5XX状态的错误日志

'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',
    },
}

二、监控非request请求

如何监控例如系统的定时任务等非用户发起的功能模块,我们可以自定义一个decorator来解决这个问题。

utils.send_exception_email(email_list,title,exc)为发送邮件的方法,可以自己实现,非常简单

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

对需要监控的方法使用decorator

@decorator_error_monitor("清算错误")
def do_settlement(users):
    for user in users:
        process_settlement_for_one_user(user)

监控效果如下图所示:

小结

以上监控方法,简单实用,无需开发额外的日志监控系统,可以在第一时间发现系统的问题,并得知系统的错误日志,帮助快速的定位问题。

本文分享自微信公众号 - Python专栏(xpchuiit)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 5分钟教你学会Django系统错误监控

    话不多说,直入正题。 先上图,看一下监控的效果。 如下是监控我们网站系统错误的邮件。包含了请求的url地址,以及详细的异常信息。 一、监控所有的request...

    小小科
  • 5分钟教你学会Django系统错误监控

    django.utils.log.AdminEmailHandler为django处理系统日志发送邮件的handler

    小小科
  • Oracle监控系统总览

    大家有没这种感觉,不论甲方还是乙方,拿到一套数据库我们很难快速的知道他的配置,数据库状态以及性能状态

    bsbforever
  • Python周刊:第 2 期

    TalkPython
  • Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(一、二)课程导学及开发环境搭建

    玩蛇的胖纸
  • Django+Vue开发生鲜电商平台之1.项目介绍

    本项目旨在使用Django、Vue和REST Framework等技术开发一个前后端分离的生鲜电商平台。

    cutercorley
  • 有福了!六步使用Python写一个小小的自动化项目监控

    本文由马哥教育Python自动化实战班5期学员推荐,转载自互联网,作者为 Defshine,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出...

    小小科
  • 那一次,Python 让我彻底「沦陷」

    如果你问我为什么痴迷于 Python 的,那我就会从自己搭建简易的邮件报警服务说起,这件事情让我觉得 Python 实在是太高效了,学习的性价比非常高:作为一个...

    somenzz
  • Python魔术世界 1 如何使用Vis

     本文通过VS安装Python和Django的环境,创建了一个Web程序,前后5分钟的操作,让你快速入门Python的编程世界,各种Python和Django的...

    py3study
  • 分分钟教你Python Web开发框架Django

    Python除了爬虫、深度学习(人工智能)、数据分析等外,还可以用来开发网站系统,如我们常见的知乎,豆瓣等都是用Python开发的网站系统。

    Python研究者
  • 一、二、开发准备

    Freshman
  • Django REST framework+Vue 打造生鲜超市(一)

    一、项目介绍 1.1.掌握的技术 Vue + Django Rest Framework 前后端分离技术 彻底玩转restful api 开发流程 Django...

    zhang_derek
  • Django+Celery实现动态配置定时任务的方法示例

    哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想学习写一下,然后最终...

    砸漏
  • 分分钟教你Python Web开发框架Django

    Python除了爬虫、深度学习(人工智能)、数据分析等外,还可以用来开发网站系统,如我们常见的知乎,豆瓣等都是用Python开发的网站系统。

    Python研究者
  • 小白学Django第一天| MVC、MVT以及Django的那些事

    Hello,我是kuls(JAP君),前段时间我们写了一套Flask框架专栏教程(Flask基础系列文章大全【JAVAandPython君出品...

    Python进击者
  • 一个人如何完成一家创业公司的技术架构?

    这是一篇长篇阔论的文章,是关于我使用 SaaS 来运行设置的详细介绍,文章会涉及到多方面的内容,包括负载均衡、cron 作业监控、订阅和支付等等。

    深度学习与Python
  • 干货预警:10种Python最佳资源推荐

    这是一个有趣的资源的集合,针对Python的有抱负的数据科学家的文章和教程的形式提供,旨在为您的数据科学之旅提供一些实用指导。

    用户6543014
  • 为什么选择Django?

    Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django、Tornado、Flask、Tw...

    萌海无涯
  • 第 436 期 Python 周刊

    链接: https://runninginproduction.com/podcast/10-scholarpack-runs-10-percent-of-th...

    爱写bug

扫码关注云+社区

领取腾讯云代金券