开发1个MVC的Web程序,然后,将其发布,用户开始使用我们的程序,使用的进程中出现了相应的毛病,直接跳转到了毛病页,用户问我们怎样回事,我们当时1般是不知道怎样回事,要是知道的话,就改了,那末,我们应当怎样着的快速的找到问题,并且,修改它呢?
有人说我们可以进行相应的调试,连接人家的http://www.wfuyu.com/db/,取得上线相应版本的程序,然后才调试,这个1般行不通,上线程序的数据都是实际的数据(安全性很高),并且,对权限的控制是非常高,你要是仅仅1个调试,就能够取得人家的所有数据,换做谁,也不会让你这么干的。那末,我们应当怎样做呢?此时,毛病日志的作用就出来了,它可以帮助我们快速的肯定问题,这个也就是本篇博客的主题:毛病日志处理。
方案1:对每一个可能出错的地方,我们都写1套方案,让其保存在相应的毛病文件中。
对每个可能出错的地方,我们都需要自己写1段重复的代码,这个不言而喻的不好,最最少我们应当将其抽象成1个类
方案2:自定义1个毛病处理类,继承HandleErrorAttribute,并在Global中进行相应的注册,实现程序出现毛病时,并且,抛到这个层上,就会自动履行里面的方法,到达1个全局毛病处理的效果,此时,我们将写入毛病文件的代码写在这里,就能够实现全局同享的作用了。
对上述那种方式,不是很好,由于,只能通过1种方式进行毛病的记录,假设,人家说,将毛病信息写到http://www.wfuyu.com/db/中,那末就非常的麻烦。
方案3:使用视察者+spring.net实现多种毛病日志记录的方式。
视察者模式可使我们的视察者的类型可以有很多,spring.net可使这些类型的创建,通过配置文件弄定的,到达1种通过修改修改1些配置就ok的效果。
上面的那种方式,看似没有问题了,其实不然,如果,对用户量非常大的程序来讲,程序中的1个小毛病也会被放大无穷倍,就是说,同1时间内,使用你这个程序,并且,在这个点出现毛病的人数非常多,这些都需要往毛病日志或http://www.wfuyu.com/db/中写,那末,这个写的进程就会变的非常的慢。
方案4:将毛病信息记录先记录在队列中,然后,另从线程池中开启1个线程,不断的从队列中取数据,并且履行写操作。
这个方案大大减轻了用户等待毛病日志写的时间,但是,还是存在1个问题,这个问题也能够说是方案3种遗留下来的,那就是,毛病日志记录的方式太多了,我们都写了?如果都要写的话,这个确切是1个不小的工程。
方案5:使用log4net进行相应的毛病信息的记录,程序中引入log4net程序集,然后,我们通过设置配置文件,就能够实现多种毛病日志的记录方式,并且,这些代码的保护,不需要我们写,1个字爽。
毛病日志不是用户业务的需求,但是,确切程序不可或缺的1部份。