邮件日志_降龙-第7章:邮件与日志

748308b5e1043bb4f942104b36941c8b.png

前面6章的工作已经能让整个系统能支持静态网站开发了,在做动态站点之前我又做了邮件和日志的功能研发,方便在整个开发过程中能够很好的做到​错误分析和定位。

我其实是最后才写的邮件和日志的实现方法,前面都是在为框架铺路,发现最后得到的产物和工作中用到的工具长得很像。

来看一下做邮件和日志功能集成我提交和改动的代码:

3c671d846e44c16d9607b22dcd73a8e2.png

十来个类和一个配置文件,此外还附带一很多小的功能开发​是随着版本迭代一起做的。比如说错误页面以及配置文件的升级。你可能观看一下我的配置文件就能知道我做的东西还是麻雀虽小五脏俱全的,看下​图:

55dd93613dbbaca479f9c0a0929904cd.png

在我的日志处理里面是不支持记录请求日志的,因为这完全可以交由负载均衡服务器或者网关服务或者第三方日志插件来记录,没必要在我的轻量级框架里面做这种很重的事情,日志我只记录真正我关心的部分。而至于邮件部分则是配置好发送方和异常接收方就可以用了,基本也就是把异常栈拉出来发邮件给​收件方​的思路。

198b5788149731a86554c57594386fad.png

上图中对写邮件的过程封装成了队列操作,然后在添加的时候触发消费者的生成,消费完了消费者也消失,没测过高并发情况,应该能满足绝大部分场景了​。单个异步线程作为消费者持续消费由生产者并发生成的日志,基本满足文件的串行写入,不会造成并发写和日志顺序错乱的问题。

同样邮件发送也是一样用到了队列,只不过邮件发送需要单独做一些方法封装才能完成邮件的正常发送,截图体会下意思:

719a1f03ecefd6fba80760d0b23a246a.png

除了时间需要在异步线程外获取并写入操作对象,其它没啥注意点的。也就是说邮件发送和日志写入的方法就算开发完了。接下来是托管所有异常处理中的异常邮件发送和日志​写入。

前面的章节介绍了我已经把所有操作在过滤器里用try{}catch(){}操作捕获异常并统一处理了。来看一下所有异常处理的思路​:

3289b9dc4404caab99e61fcfb9ba2ed0.png

思路很清晰分别处理业务异常,系统异常和系统错误三种情况,然后再来看截图:​

e6287b74bcd7a45db95529035346cc1e.png

其实只有业务异常处理稍微特殊一点,其它的异常处理方式都一样。也就是在这里引入了异常页面,于是就顺便把异常页面都补上去做了。然后再每个方法里面调用了邮件发送和日志写入,整个过程就串起来了,最后再在发邮件里面复用写日志。唯独在写日志的地方捕获的异常不能在进行异常处理了,防止循环递归。

最后来看一下效果吧,我发送了一个异常到自己的QQ邮箱,然后本地日志也写了,整个效果还是​不错的。

915693a0f30ef767cf607a16f1f99e24.png

d87f490055b71989de7f4ebe3e25d83a.png

邮件和日志写的代码量还是挺多的,而且这是我之前实践没完成的遗留问题,今天是新开发的,心情真是不错,再接再厉,下一章准备开发http请求服务。​

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值