日志模块基本要素包括:

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

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

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

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. ScrollView-电影列表

    ScrollView 的使用import React, { Component } from 'react';import { Platform, StyleSheet, Text, View, Sc ...

  2. SpringBoot application.properties 配置项详解

    参考: http://blog.csdn.net/lpfsuperman/article/details/78287265### # spring boot application.propertie ...

  3. 14. 异步加载Js的方式有哪些?

    我们都知道渲染引擎遇到 script 标签会停下来,等到执行完脚本,继续向下渲染,如下: <script type="text/javascript" src=". ...

  4. python学习之路---day04

    一:元组 元组案例:tuple=("张三","李四","王五","小六","大七",["1 ...

  5. P4592 [TJOI2018]异或 (可持久化Trie)

    [题目链接] https://www.luogu.org/problemnew/show/P4592 题目描述 现在有一颗以\(1\)为根节点的由\(n\)个节点组成的树,树上每个节点上都有一个权值\ ...

  6. C# 错误和异常

    Try,catch和finally语句组成 异常层次结构 部分异常属性: Message 类型:string 描述:含有解释异常原因的消息(只读) StackTrace 类型:string 描述:含有 ...

  7. LightOJ - 1032 数位DP

    #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #i ...

  8. h5列表页的性能优化

    //0.还原状态 caoke.loading=false $(".loadbtn").text("点击加载更多") //1 还没有任何数据的情况 if(data ...

  9. 解决运行vue项目的报错This relative module was not found:

    运行vue项目出现这样的报错. This relative module was not found: * ../../assets/img/spot.png !./src/components/on ...

  10. 腾讯蔡晨:十年沉淀,腾讯iOA为企业安全保驾护航

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会再广州召开,广东省各级政府机构领导.海 ...