日志模块基本要素包括:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ERP设计之系统基础管理(BS)-日志模块设计(转载)的更多相关文章

  1. 10、ERP设计之系统基础管理(BS)- 平台化设计

    ShareERP 2013-09-03 ERP业务平台化是每个软件提供商必须要进行的趋势,传统定制化路线已死,不能走定制化的老路了.以往最大问的题是不能累积和沉淀技术及提升项目业务管理能力,其次是管理 ...

  2. 12、ERP设计之 系统基础管理(BS)- 模块与菜单的关联

    ShareERP2013-10-03 模块:具有功能设计.权限绑定,链接用户菜单与系统的重要桥梁. 菜单:是用于显示与用户交互的重要入口,更是导航系统的舵手,所以它的设计直接影响到用户体验. 菜单可能 ...

  3. ERP或PLM系统-物料编码管理的技术实现

    1 企业现状 企业日常经营过程中会产生大量的文档,如设计图纸.变更单.计算书.设计方案等,如果是制造企业还会产生大量的产品.组成产品的零部件等物料,这些数据在进入信息系统前都需要有一个唯一的标识,也就 ...

  4. Mybatis框架基础支持层——日志模块(8)

    前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...

  5. ERP产品购进系统商品管理(三十三)

    购进系统总体架构图: 总体业务: 流程图: 自定义函数: -- Description: 根据渠道编号查询渠道名称 -- ======================================= ...

  6. 使用线程执行堆栈StackTraceElement设计Android日志模块

    假设你想在你的Android自己主动打印程序MainActivity.onCreate(line:37)这样的类名.方法名称(行)登录如何实现? 1.介绍Java线程执行堆栈  Java.lang包中 ...

  7. Android 利用线程运行栈StackTraceElement设计Android日志模块

    如果你想在你的Android程序中自动打印MainActivity.onCreate(line:37)这种类名.方法名(行数)的日志该如何实现呢? 1.引入Java的线程运行栈 Java.lang包中 ...

  8. php 日志模块源码解析

    php日志模块设计 Monolog 是PHP的一个日志类库解析 整体介绍:monolog日志模块遵循 PSR3 的接口规范.主要有日志格式类接口(格式化日志信息),处理类接口(写日志的驱动,通过扩展写 ...

  9. ERP的基础管理-物料编码

    在企业ERP系统中,物料编码管理是所有数据的基础,可以这样说:"没有物料编码就没有ERP".实际上物料编码对于制造类企业供应链管理作用不可说不巨大,影响不可谓不深远,甚至我们在考虑 ...

随机推荐

  1. 转 JavaScript里的数组转化新方法Array.From

    过去,我们使用各种各样的方法来将类似Array对象的东西(比如 arguments 和 NodeList) 转换成真的数值.比如下面这个: 将NodeList转换成数组 基本上,这些东西我们都可以使用 ...

  2. Android Studio 常用技巧

    1.在控制台输出语句方法 //在控制台输出语句 System.out.println("like"); //方式1 Log.d("002","lind ...

  3. LeetCode记录之7——Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 Note:The ...

  4. [转] 理解SVG transform坐标变换

    http://www.zhangxinxu.com/wordpress/2015/10/understand-svg-transform/

  5. scrapy框架初识

    一.scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具 ...

  6. 【研究】Discuz<3.4任意文件删除漏洞

    这里以Discuz3.2为例 关键字:Powered by Discuz! X3.2 时间有限,就不一一截图了,Discuz所有页面全在Discuz_X3.2_SC_UTF8/upload/目录下 利 ...

  7. 多个模块使用python logging

    链接:https://docs.python.org/2/howto/logging-cookbook.html#logging-cookbook 具体的使用方法,请参考如下代码: import lo ...

  8. 用Verilog语言设计一个3-8译码器

    case语句 if_case语句 源码下载 Github >>

  9. Oracle 单实例数据库安装和real application clusters数据库安装的区别

    在想了解Oracle单实例数据可和RAC数据库前,请确保你已经知道了数据库和实例的关系,如果不了解,请参考Oracle 数据库实例和数据库. 单实例数据库模式 单实例模式下,一个数据库只能通过一个实例 ...

  10. 安装cloudermanager时出现org.spingframework.web.bind.***** host[] is not present at AnnotationMethodHandlerAdapter.java line 738 ****错误(图文详解)(博主推荐)

    不多说,直接上干货! 首先,这个问题,写给需要帮助的朋友们,本人在此,搜索资料近半天,才得以解决.看过国内和国外,资料甚少.特此,写此博客,为了弥补此错误解决的资料少的缘故! 问题详解  解决办法   ...