python 日志分析框架_我的第一个python web开发框架(40)——后台日志与异常处理...

后台权限和底层框架的改造终于完成了,小白也终于可以放下紧悬着的心,可以轻松一下了。这不他为了感谢老菜,又找老菜聊了起来。

小白:多谢老大的帮忙,系统终于改造完成了,可以好好放松一下了。

老菜:呵呵,对于后台管理系统功能,你觉得已经完工了吗?没有什么遗漏的吗?

小白:啊......权限管理完成后不就完了吗?还有功能要弄的吗?

老菜:如果光从使用角度来说,也可能说完成了,但还有一些细节还需要处理的,比如说日志和异常。

小白:前面不是做过日志处理了,将所有的异常都自动写到日志中,方便开发人员分析查看,还能自动发送异常通知邮件,另外对于客户端提交的所有数据,在bottle勾子那里也做了处理,都写入到日志中了,还有什么要处理的?

老菜:对于日志来说可以分为两块:

一是管理员的操作日志,因为后台管理操作涉及到数据安全,管理员的所有操作都需要记录下来,以便发生问题时可以找到关系人,同时有些业务系统交给相关人员使用以后,BOSS却不知道他们到底有没有登录使用,每天在系统做什么;

二是系统的异常和关键数据的记录,这个属于系统底层的日志,将所有异常和与金钱相关的操作信息全部记录下来,有故障时开发人员可以根据日志快速定位,及时修复问题。这方面我们前面已经做一部分了,在前面底层很多地方都做了try...except...处理,这是很必要的,但你有没有发现,我们的代码在本地经常运行的好好的,而将代码更新上服务器后即经常爆500错误却不知道,想要排查异常时也很不方便,但查看uwsgi等多个系统日志才行,有些异常你查来查去都查不出来,非常浪费时间,你清楚这些异常主要是由什么引起的吗?有没有想过用什么方法也可以做到实时通过推送通知了解这些错误呢?当然对于异常的发生是很难避免的,但是我们可以通过一些手段,让这些异常发生后即时通过邮件或微信等方式,将异常详情通知我们,然后快速修复问题。如果你对系统非常熟悉的话,有可能用户还没反应过来,十几秒你就将故障修复了,做到人不知鬼不觉,哈哈。

小白:是啊,异常问题是我最大痛的事情,很多时候明明本地调试的好好的,一到服务就挂了,找到找去也找不出问题所在,浪费了大量的时间。那么我们要怎么来进行改造呢?

老菜:接下来你看我讲解就知道了,主要是对已有代码进行修改。

在前面的数据结构设计时,我们有一个管理员操作日志表,接下来的改造主要是对这个表进行相关的操作。

首先我们需要创建这个日志表的逻辑类,由于我们的ORM是用字典来进行增改操作的,所以需要先组合字段字典,然后再执行对应的方法,为了让操作简化,我们需要在日志表逻辑类中添加一个方法,通过传参的方式来进行日志的添加操作,这样就可以免去我们组合字典的操作了。

1 #!/usr/bin/env python

2 #coding=utf-8

3

4 from logic import_logic_base5 from common.string_helper importstring6 from config importdb_config7

8

9 classManagerOperationLogLogic(_logic_base.LogicBase):10 """管理员操作日志管理表逻辑类"""

11

12 def __init__(self):13 #表名称

14 self.__table_name = 'manager_operation_log'

15 #初始化

16 _logic_base.LogicBase.__init__(self, db_config.DB, db_config.IS_OUTPUT_SQL, self.__table_name)17

18

19 defadd_operation_log(self, manager_id, manager_name, ip, remark):20 """记录用户登录日志"""

21 #组合要更新的字段内容

22 fields = {'manager_id':manager_id, 'manager_name':string(manager_name), 'ip':string(ip), 'remark':string(remark)}23 #新增记录

24 self.add_model(fields)

从代码中可以看到,add_operation_log()方法,它其实就是将要更新到数据库的参数传进来,在方法里组合成字典,然后调用add_model()进行更新操作,调用时用下面代码就可以了

_manager_operation_log_logic.add_operation_log(manager_id, manager_name, ip,'登陆成功')

完成这个操作日志逻辑类和日志添加方法以后,要改造登录接口就简单多了,只需要在出错(密码错误、禁用)和成功时进行调用,记录到数据表就可以了,具体看代码。

登录接口除了需要添加日志记录以外,还需要处理一个安全问题,我们没有对多次输出密码错误进行处理,如果有人想要登录系统写个密码劳举器,可能很容易后台就给人攻破了,所以我们需要对这个做一个限制,比如说同一ip在指定时间内只能出错多少次,每次出错时都记录一下出错次数,当出错次数超出限制时,则拒绝用户登录。具体自行查看代码,这里我就不再详细说明了。

1 #!/usr/bin/env python

2 #coding=utf-8

3

4 from bottle importput5 from common importweb_helper, encrypt_helper, security_helper6 from common.string_helper importstring7 from logic i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值