http://www.cnblogs.com/hooray/archive/2012/09/05/2672133.html
管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。
相关文章链接:《系统操作日志设计》
在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?
在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。
打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:
生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝
这样一个下单操作就包含了4部分,可以把这4部分看成是4张表,分别对这4张表进行对应的操作,就实现了业务。
但今天我要讲的不是业务操作日志,因为不同项目的业务不尽相同,所以它无法做成通用模块,而我要讲的,就是普通操作日志。
上面解释了一大段,下面干货就要亮相了,先洗把脸清醒下。
……
首先,哪些地方需要记录操作日志?执行insert、update、delete这3个操作的时候,就需要进行日志,而日志执行的先后顺序如下
insert | 在insert后执行 |
update | 在update前后都要执行,操作前获取操作前数据,操作后获取操作后数据 |
delete | 在delete前执行 |
顺序清楚后,就来看下我写的一份日志操作类吧,第一版随便谢谢的,重复代码有点多,还未来得及优化。
使用前,需要引入数据库操作类,这是我之前写的一份,可参考《全新的PDO数据库操作类(仅适用Mysql)》。
引入之后,就可以开始使用了。
select
1
|
$log ->insert(82, 'tb_member' );
|
update
1
2
3
|
$log ->updateStart(82, 'tb_member' );
//中间放更新操作代码 $log ->updateEnd();
|
delete
1
|
$log -> delete (82, 'tb_member' );
|
可以看到,一共只需要两个参数即可,分别是表ID(主键)和表名称。
另外需要强调一点,表注释和字段注释一定要完整,因为记录的信息包含注释,目的就是为了查阅的时候能清楚哪个字段是干什么用的。
下面就看下成品吧
最后把表结构分享下,一共2张表,一张主表一张从表,主表记录操作表及操作人等信息,从表记录操作的表字段信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
-- ---------------------------- -- Table structure for `tb_log` -- ---------------------------- CREATE TABLE `tb_log` (
`tbid` bigint (20) NOT NULL AUTO_INCREMENT,
`adminid` bigint (20) DEFAULT NULL COMMENT '管理员id' ,
`type` tinyint(4) DEFAULT '1' COMMENT '操作类型:1新增2修改3删除' ,
`tableid` bigint (20) DEFAULT NULL ,
`tablename` varchar (255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '表名' ,
`comment` varchar (255) COLLATE utf8_unicode_ci DEFAULT NULL ,
`dt` datetime DEFAULT NULL ,
PRIMARY KEY (`tbid`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE =utf8_unicode_ci;
-- ---------------------------- -- Table structure for `tb_log_content` -- ---------------------------- CREATE TABLE `tb_log_content` (
`tbid` bigint (20) NOT NULL AUTO_INCREMENT,
`logid` bigint (20) DEFAULT NULL ,
`tbkey` longtext COLLATE utf8_unicode_ci,
`tbvalue` longtext COLLATE utf8_unicode_ci,
`currenttbvalue` longtext COLLATE utf8_unicode_ci,
`comment` varchar (255) COLLATE utf8_unicode_ci DEFAULT NULL ,
PRIMARY KEY (`tbid`)
) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8 COLLATE =utf8_unicode_ci;
|
相关推荐
毕设-基于web日志挖掘的网络教学系统的设计与实现,整个项目采用MyEclipse+MySQL+JDK1.7工具,已上传资源包括源码及sql数据库,导入可直接运行;采用SSH框架实现课程管理,作业管理,学生在线学习,交互式通信,资源...
浅谈计算机系统的安全防范调研报告 浅谈计算机系统的安全防范 随着计算机及网络技术与应用的不断发展,伴随而来的计算机系统安全问题越来越引起 人们的关注。计算机系统一旦遭受破坏,将给使用单位造成重大经济损失...
而不用系统默认的日志记录方式呢? 我认为有两个原因: 1.团队需要一个统一格式的日志方便管理 2.大量无用错误日志占据硬盘空间,仅需记录有意义的日志。 那么,实践一下。 1.打开你的php.ini 2.打开日志记录,将...
浅谈网络安全防护技术 摘要:随着计算机网络应用的广泛深入.网络安全问题变得日益复杂和突出。目前计 算机病毒技术和黑客技术的融合,使得计算机所受到的威胁更加难以预料。本文从常见 的网络安全防护方法入手,...
SBS日志文件则反映的是系统信息。数据采集涉及的内容为:1、测试前的清频工作2、测试过程3、数据采集工具4、虚拟负载5、测试得到的性能指标6、测试结果。CDMA网络问题涉及的分析大致有:1、接入失败分析2、掉话分析3...
浅谈大数据及大数据分析 作者:吕跃超 来源:《电脑知识与技术》2018年第18期 摘要:认识当今的大数据环境、新型分析方法的基本原理和商机、所需的角色 ,以及垂直行业中具有代表性的大数据分析示例。明确大数据,...
也谈 ASP.NET 1.1 中 QueryString 的安全获取写法 ASP.NET运行模式:PageHandlerFactory 利用搜索引擎引用来高亮页面关键字 网站首页的自动语言切换 应用系统的多语言支持 (一) 应用系统的多语言支持 (二) 自动...
随来社会的进步,计算机的广泛应用,很多事务处理过程中事务的恢复工作一般依赖于计算机数据库管理系统,而事务管理器必须做好分布式事务处理的事务恢复处理。这需要做好二个阶段的工作:在正常的事务处理过程中,...
二、网络安全审计系统的主要功能 采集多种类型的日志数据 能采集各种操作系统的日志,防火墙系统日志,入侵检测系统日志,网络交换及路由设 备的日志,各种服务和应用系统日志。 日志管理 多种日志格式的统一管理。...
二、网络安全审计系统的主要功能 采集多种类型的日志数据 能采集各种操作系统的日志,防火墙系统日志,入侵检测系统日志,网络交换及路由设 备的日志,各种服务和应用系统日志。 日志管理 多种日志格式的统一管理。...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
3.6.2 类的设计 3.7 属性 3.7.1 语法 3.7.2 只读/只写属性 3.8 继承 3.8.1 继承的基本概念 3.8.2 创建派生类 3.8.3 对象的创建 3.8.4 使用抽象类 3.8.5 使用密封类 3.9 多态 3.9.1 抽象方法 3.9.2 覆盖 3.9.3 虚方法...
17_信息系统框架集成第三方产品案例_加解密抽象类和加解密厂商类实现 18_信息系统框架集成第三方产品案例_集成测试加密厂商和socket厂商入围 19_信息系统框架集成第三方产品案例_集成框架变成类方式_传智扫地僧 20_...
数据仓库与数据挖掘技术浅谈.caj 数据仓库和数据挖掘技术在ERP中的应用.kdh 数据仓库的建设与数据挖掘技术浅析.caj 数据仓库的建设与数据挖掘技术浅析1.caj 数据挖掘 企业决策分析的有效工具.caj 数据挖掘——技术与...
数据仓库与数据挖掘技术浅谈.caj 数据仓库和数据挖掘技术在ERP中的应用.kdh 数据仓库的建设与数据挖掘技术浅析.caj 数据仓库的建设与数据挖掘技术浅析1.caj 数据挖掘 企业决策分析的有效工具.caj 数据挖掘——技术与...
数据仓库与数据挖掘技术浅谈.caj 数据仓库和数据挖掘技术在ERP中的应用.kdh 数据仓库的建设与数据挖掘技术浅析.caj 数据仓库的建设与数据挖掘技术浅析1.caj 数据挖掘 企业决策分析的有效工具.caj 数据挖掘——技术与...