浅谈管理系统操作日志设计(附操作日志类)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。

  相关文章链接:《系统操作日志设计

  在开始做之前,必须把两个日志分清楚,那就是普通操作日志业务操作日志,这两者有何区别?

  在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。

  打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:

  生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝

  这样一个下单操作就包含了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;

    本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2012/09/05/2672133.html ,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
71 0
|
8天前
|
Windows Python
如何反向读取Windows系统日志EVTX文件?
以下是如何反向读取Windows系统日志EVTX文件
20 2
|
15天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
14 2
|
26天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
47 1
|
1月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
44 3
|
1月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
35 4
|
3月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
46 2
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
55 0
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
38 0