Python | 5分钟教你学会Django系统错误监控
话不多说,直入正题。
先上图,看一下监控的效果。
如下是监控我们网站系统错误的邮件。包含了请求的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)
监控效果如下图所示: 小结
以上监控方法,简单实用,无需开发额外的日志监控系统,可以在第一时间发现系统的问题,并得知系统的错误日志,帮助快速的定位问题。
原文发布时间为:2018-10-31
本文作者:上海小胖
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java反射-高级开发必须懂的
理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。 一:Class类的使用 ①.万事万物皆对象,(当然,基本数据类型,静态成员不是面向对象(属于类的)),所以我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象,但是这些对象都不需要new出来,因为java.lang.Class类的构造方法是私有的。 ②.任何一个类都是Class类的实例对象,这个实例对象有三种表示方式:(我们新建一个Student类) Class c1 = Student.class;//实际告诉我们任何一个类都有一个隐含的静态成员变量class(知道类名时用) Class c2 = stu.getClass();//已知该类的对象通过getClass方法(知道对象时用) Class c3 = Class.forName("类的全名");//会有一个ClassNotFoundException异常 官网解释说:c1,c2表示了Student类的类类型()class type),万事万物皆对象,类也是对象,是...
- 下一篇
预训练模型迁移学习
摘要:如何快速简便地解决图像分类问题呢?本文通过使用Keras及一个预训练模型的实例,教你如何通过迁移学习来解决这个问题。 深度学习正在迅速成为人工智能应用开发的主要工具。在计算机视觉、自然语言处理和语音识别等领域都已有成功的案例。 深度学习擅长解决的一个问题是图像分类。图像分类的目标是根据一组合理的类别对指定的图片进行分类。从深度学习的角度来看,图像分类问题可以通过迁移学习的方法来解决。 本文介绍了如何通过迁移学习来解决图像分类的问题。本文中所提出的实现方式是基于Python语言的Keras。 本文结构: 1)迁移学习 2)卷积神经网络 3)预训练模型的复用 4)迁移学习过程 5)深度卷积神经网络上的分类器 6)示例 7)总结 1、迁移学习 迁移学习在计算机视觉领域中是一种很流行的方法,因为它可以建立精确的模型,耗时更短。利用迁移学习,不是从零开始学习
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2配置默认Tomcat设置,开启更多高级功能