系统操作日志设计
2015-06-07 22:19
274 查看
http://www.cnblogs.com/samlin/archive/2010/02/08/Log-Operation-Management.html
前言
我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录、或者更新某条数据都需要跟踪到变化的内容、或者删除数据时需要记录谁删除了,何时删除了,以便误删后可以通过系统的XXX功能来恢复误删的数据。我将这种功能称为操作日志
为什么要做操作日志?
其实上文也描述了一些,其主要目的就是跟踪到每一个用户在系统的操作行为,如对数据进行查询、新增、编辑或删除甚至是登录等行为。更进一步的理解可以说是对用户使用系统情况的跟踪,对数据的跟踪防止数据意外删除、更改时有所记录,有所依据,以便对数据的还原,从某种程序上可以保护数据的完整性。
系统设计
场景我们现在有一张表叫Employee:
ID | int |
Name | nvarchar(50) |
Gender | nvarchar(2) |
DateCreated | datetime |
CreateUser | nvarchar(50) |
好了,现在我们要对Empoyee表操作的信息做一个系统日志,那怎么办?
也许你可以建立多一个表跟Employee表一模一样的,叫做EmployeeLog:
ID | int |
Name | nvarchar(50) |
Gender | nvarchar(2) |
DateCreated | datetime |
CreateUser | nvarchar(50) |
LogCreated | datetime |
OperationType | int |
此时这种情况可能大家在做用户登录日志的时候是一件很常见的事件。
但……问题来了,假如我需要对表EmployeeIncome(员工的收入情况)做日志那怎么办?
好建立多一张表叫EmployeeIncomeLog来记录员工收入情况的操作日志。
假如又需要对表FixedAsset(固定资产)进行日志记录那又怎么办?
好了,大家可能意识到我们这样做不但会造成表数量的增倍,而且大大的增加了工作量和开发时间,对数据库表不易管理等情况。
因此我们需要一个能够通过简单的配置和编写就可以完成以上功能的日志管理
数据库设计
![](http://images.cnblogs.com/cnblogs_com/samlin/WindowsLiveWriter/b090f1b682fb_DC0E/image_thumb_1.png)
包括三个表,
LogSetting(日志设置)——用来存储配置业务表名、业务名称、主键等
LogSettingDetail(日志设置明细)——用来存储配置业务表需要记录的详细内容,如Employee表中,我们可能需要记录字段Name、Gender等信息。
LogOperation(操作日志)——用来记录用户对各种业务操作的内容情况。
下篇将讨论用代码如何实现日志管理的功能,下面先来几张图:
日志列表:
![](http://images.cnblogs.com/cnblogs_com/samlin/WindowsLiveWriter/b090f1b682fb_DC0E/image_thumb_2.png)
查看日志内容:
![](http://images.cnblogs.com/cnblogs_com/samlin/WindowsLiveWriter/b090f1b682fb_DC0E/image_thumb_3.png)
相关文章推荐
- matlab 在柱状图上 显示数字
- How to retrieve and change partition's UUID Universally Unique Identifier on linux
- UNP学习记录---三次握手和四次挥手
- 高负载PHP-FPM调优
- sed命令详解
- SKWIC算法推导
- 读《平凡的世界》感想(一)
- Telnet服务配置Linux+Windows
- Find Linux WWID’s and Fiber Channel Storage
- Android 优化电池使用时间——根据需要操作广播接收器
- curl 命令,curl监控网页shell脚本,curl多进程实现并控制进程数
- C++对C语言的变量检测增强
- mysqldump用法总结
- C++对C语言的变量检测增强
- curl 命令,curl监控网页shell脚本,curl多进程实现并控制进程数
- Pig模式
- 在linux下配置nginx+java+php的环境
- iOS开发—02音频处理(音乐播放器2)
- StreamReader和StreamWriter类的基本操作
- iOS开发—03音频处理(音乐播放器3)