多条目日志记录小结

  背景:小组长临时被派到其他项目组(一般项目就2个人负责,唯有银行的超大型项目十几个人),致整个项目后续的一切事宜就由我来负责

       环境:项目中catch记录log table后,返回默认值(false、null),或者无返回值

      日志是整个项目开发中不可或缺,可记录用户访问系统时的一些状态,如异常日志、界面按钮动作等。平时通过按钮日志来查看用户的执行的动作、访问时间以及访问量。进而推导出用户的使用习惯,届时可针对性的进行推送以及其他业务。而当项目出现问题的时候,也能通过查看异常日志来第一时间找出问题的所在。及时对BUG进行处理。作为入行小白,刚开始时一直用Log4net工具。毕竟这是一个比较强大的包。只需在配置文件中配置好节点,便可将日志信息写入到数据库、txt 等等之中。

       没完整接触过项目的时候不觉得日志有什么作用,直到当项目部署到服务器上运行出现异常,无法第一时间找到原因时才发现日志的重要性。 所以就很有必要捕获到项目中运行的异常,并且记录下来,这样之前的项目中针对log的处理就存在很大的问题

 ①未设置全局异常: 项目一但部署到服务器,和代码基本就说拜拜,全靠日志来检测,针对 try 之外的异常,catch无法捕获,这时候全局异常是日志就派上用场了,专治各种未捕获的异常,此时在项目中新建一类,重写OnException 方法、注册

②异常日志返回值: catch之前返回的都是默认值(false、null),这显然是不对的,改为throw ex,统一由异常过滤器返回值异常页

③未处理字符串连接问题:  项目中仅仅记录table log是不够的,当连接字符串出错,此时捕获的异常是无法写入到异常表中,所以要在全局异常过滤器中进行判断,当是字符串异常时,仅记录txt log,而不去记录到table中,然后跳转至错误页

       除此异常日志,还有其他日志,常见的如 用户操作记录日志、上线人数日志等,由于银行系统的网站涉及到较多表操作(之前写主管放行时,也有前辈评论为: 面向数据库编程),这里采用底层SQL的方法来记录日志。这里作说明下

1.记录用户操作日志(表中有:BeforeData、AfterData栏位)

      一般情况下,该日志用来记录用户在登陆系统后点击按钮的操作,如查询、删除(涉及多笔)、修改(涉及修改前后变化的数据)、新增等等。这其中,查询对简单,充其量需要记录下查询条条件。对于新增,如果客户有需要记录新增的实体数据,则可采取表单提交的方式进行提交。

      删除:稍微复杂一些,这里客户要求的是记录多条目数据,和删除前的数据(XML节点标识),分两步走,一个创建的XML节点方法(参数:实体),一个查询实体的方法(参数:拼接联合主键集合),逻辑是:先将待删除数据的联合主键进行拼接(非List),然后调用查询实体的方法,得到实体集合,最后遍历集合,调用租XML节点的方法。如此即可。

      修改:同样这里需要记录修改前后变化的数据,修改后的数据可通过表单提交的实体来获取数据,对于修改前的数据,通过表名、主键来进行查询,最后得到实体。拿到实体之后调用组XML方法即可。

---市人皆大笑,举手揶揄之

原文地址:https://www.cnblogs.com/Sientuo/p/7607882.html