日志模块基本要素包括:

用户会话、登录、注销、模块加载/卸载、数据操作(增/删/改/审/弃/关等等)、数据恢复、日志查询,如果高要求的客户可能还需要审计分析、总结报告。

如果想提高用户体验,可以从用户日志分析中得出更多用户操作行为上的数据,以便我们改进程序模块,加深用户体验。

设计日志模块,要考虑多个层面:

1、  用户会话管理:主要记录登录、注销、用户端信息。

2、  用户行为管理:主要记录用户操作行为习惯,记录模块加载/卸载、功能使用率。

3、  数据操作日志管理:主要记录用户数据流的变化情况,可追溯、分析、恢复。

4、  日志分析审计:处理分析日志,总结与报告。

会话/任务日志比较简 单,重点在数据操作日志,因为ERP系统数据表多,结构复杂,数据量也大。数据操作先要理清记录日志的方式。增加记录是否要记日志,笔者的理解不需要。只 有当数据被更改或删除时才需要记录日志。如果增加需要记录,那么它的数据量就非常大了,不推荐。修改数据时或删除时,记录修改或删除前的数据,同时记录用 户会话信息,而不是用户ID,这样防止非法用户篡改日志数据。

数据日志表如何设计,是 用一个表,还是每个表对应一个日志表,笔者推荐后者。如果技术达不到的话,就用一个表,但追溯、恢复、分析数据就难了,因为表结构不同,不能冗余的将日志 数据放在一起,不利于恢复,分析。同时,如果不同的表对应一个日志表处理起来也是非常复杂,增加编程难度,但是技术是可以克服的。

注意:强烈不推荐使用DBMS引擎的触发器,使用它后,数据库服务器的性能会大大地降低(特别是在使用不当的时候,情况更糟),并且也不可以在每个表上做触发器,有时业务逻辑日志,触发器根本没用,另外触发器记录的信息有限,不足以提供分析、审计所要的信息。

日志模块架构体系: 用户表—》用户登录会话日志—》用户任务(模块)日志—》用户数据操作日志。

如果是按照每张业务单据表对应一个日志表,那么操作日志表最好不要放在同一个数据库上,可单独建立一个日志库,表结构就是对应的每张业务单据的表结构加上日志记录相关字段,日志表名则以业务单据表名+“_Logs”为统一后缀格式,以方便统计及批量处理日志表。

批量处理日志表,因为这 样相关的业务单据太多,不太可能每个业务单据都去手工建立一一对应的日志表,对于批量处理的事务,交给DBMS。主要是处理思路,数据库一般都支持处理数 据定义DML语句(创建表、视图等),在程序中动态调用处理定义日志表结构,然后将数据日志内容一起提交给数据库服务器就可以了,或者在数据库定义一个存 储过程处理。

如何用SQL脚本复制创建表结构,笔者在此提供一个简单的SQL2000  SQL代码:复制表结构

注意:以上代码只是取表对像信息,如Image、二进制数据等等字段没有加入,因为这些数据没必加入日志。在插入日志数据内容时,同样也可以用上面的方式,提取需要的字段,插入日志表,并记录用户操作信息。

下图为笔者的日志浏览界面:

下篇:系统基础管理(BS)- 报表框架设计  待续……

来源:分享ERP  http://www.shareerp.com 联系QQ:908916944

最新文章

  1. Google之Chromium浏览器源码学习——base公共通用库(一)
  2. 无法为目标平台“Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider”创建扩展管理器
  3. PHP生成二维码图片
  4. Something you need to perform after RedHat 6.x installed
  5. js中的条件语句
  6. 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  7. 在Linux Mint13下编译安装mono运行时
  8. MySQL、PHP入门
  9. Scrum Meeting Alpha - 9
  10. SpringCloud(8)微服务监控Spring Boot Admin
  11. wav转txt格式的代码实现(c,python)
  12. Python3 图片转字符画
  13. pom文件中maven-assembly-plugin插件学习
  14. __super:: 使用
  15. 开机出现grub界面(待尝试)
  16. 逆袭之旅DAY16.东软实训.Oracle.匿名块
  17. BAT-显示桌面图标
  18. SQL Server 登录名、服务器角色、用户名和数据库角色 --- 解释
  19. Spring Security with Boot
  20. DPHARD

热门文章

  1. K3 Wise 常用表【转载】
  2. angularJs表格效果
  3. 二 ASP.NET MVC 第一个程序 hello world
  4. python学习之路---day03
  5. rest-assured的对象映射(序列化和反序列化)
  6. Hadoop 使用基础
  7. 前后端分离和restful开发规范
  8. Python入门笔记——(1)数字与表达式
  9. shell 进阶之匹配字符串
  10. Unity GetComponentsInChildren<T>(true);