系统操作日志设计

转载 2015年11月20日 11:49:09

前言

 

我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录、或者更新某条数据都需要跟踪到变化的内容、或者删除数据时需要记录谁删除了,何时删除了,以便误删后可以通过系统的XXX功能来恢复误删的数据。

我将这种功能称为操作日志

为什么要做操作日志?

其实上文也描述了一些,其主要目的就是跟踪到每一个用户在系统的操作行为,如对数据进行查询、新增、编辑或删除甚至是登录等行为。更进一步的理解可以说是对用户使用系统情况的跟踪,对数据的跟踪防止数据意外删除、更改时有所记录,有所依据,以便对数据的还原,从某种程序上可以保护数据的完整性。

 

系统设计

场景

我们现在有一张表叫Employee:

ID int
Name nvarchar(50)
Gender nvarchar(2)
DateCreated datetime
CreateUser nvarchar(50)

在aspx页面中可能会有EmployeeEdit.aspx(用来添加或更新Employee信息等操作),EmployeeList.aspx(用来查询或进行删除Employee信息等操作)

好了,现在我们要对Empoyee表操作的信息做一个系统日志,那怎么办?

也许你可以建立多一个表跟Employee表一模一样的,叫做EmployeeLog

ID int
Name nvarchar(50)
Gender nvarchar(2)
DateCreated datetime
CreateUser nvarchar(50)
LogCreated datetime
OperationType int

其中加多了一些附属的信息如LogCreated(日志添加日期)和OperationType(查询、新增、删除、更新)

此时这种情况可能大家在做用户登录日志的时候是一件很常见的事件。

但……问题来了,假如我需要对表EmployeeIncome(员工的收入情况)做日志那怎么办?

好建立多一张表叫EmployeeIncomeLog来记录员工收入情况的操作日志。

假如又需要对表FixedAsset(固定资产)进行日志记录那又怎么办?

 

好了,大家可能意识到我们这样做不但会造成表数量的增倍,而且大大的增加了工作量和开发时间,对数据库表不易管理等情况。

 

因此我们需要一个能够通过简单的配置和编写就可以完成以上功能的日志管理

数据库设计

系统日志设计

包括三个表,

LogSetting(日志设置)——用来存储配置业务表名、业务名称、主键等

LogSettingDetail(日志设置明细)——用来存储配置业务表需要记录的详细内容,如Employee表中,我们可能需要记录字段Name、Gender等信息。

LogOperation(操作日志)——用来记录用户对各种业务操作的内容情况。

 

下篇将讨论用代码如何实现日志管理的功能,下面先来几张图:

日志列表:

日志管理列表

查看日志内容:

查看日志内容

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

管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。   相关文章链接:《系统操作日志设计》   在开始做之前,必须把两个日志分清楚,...
  • sd4015700
  • sd4015700
  • 2015年08月10日 13:14
  • 6668

系统操作日志原型设计

系统操作日志原型设计: 该设计主要为实现用户操作一些重要功能过程中,系统会自动记载对应操作日志,以及操作过程中涉及的库、表、字段及数据变动,以便后期追责、及功能回退等需要。 名词解释: 业务编码...
  • mydeathtrial
  • mydeathtrial
  • 2017年07月10日 16:41
  • 928

应用软件设计模型 - 日志组件设计方案

原文:http://www.oecp.cn/hi/yongtree/blog/127
  • Gykimo
  • Gykimo
  • 2014年07月16日 13:38
  • 3440

后台管理系统操作日志模块设计思路

背景对于很多后台管理系统来说,权限较多,对系统操作的人也会多。如此以来,对于一些操作的记录就非常有必要了,从而可以清楚的追踪对系统进行操作的人以及做了哪些操作,并且可以快速排查定位一些问题。下面简单说...
  • hightrees
  • hightrees
  • 2017年12月10日 16:40
  • 272

系统操作日志设计(一)

前言 我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录、或者更新某条数据都需要跟踪到变化的内容、或者删除数据时需要记录谁删...
  • jackljf
  • jackljf
  • 2010年06月30日 16:36
  • 960

C#系统开发操作日志的实现

第一步:设计一个表(命名为goodluck_log),用来记录操作事项,设计如下: 其中,UserName为操作员姓名,SQL_Time为操作日期,SQL_log为操作描述,数据类型如图所示。 ...
  • lucky51222
  • lucky51222
  • 2014年03月15日 11:05
  • 5835

2014.02.19 系统操作记录 数据库表的设计

为了便于记录系统数据的人为改动,设计了如下表,可实现"数据恢复"的功能:
  • xingxinglaile
  • xingxinglaile
  • 2014年02月19日 15:39
  • 1036

系统操作日志设计-代码实现

通了解《系统操作日志设计》,已基本明确我们不能通过clone的方式来做日志的设计,因为这样不仅会造成的你数据库表爆炸的情况,还大大的增加了工作量,减少了系统的可维护性。...
  • tianling456
  • tianling456
  • 2015年12月06日 17:36
  • 154

系统操作日志设计

前言   我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录、或者更新某条数据都需要跟踪到变化的内容、或者删除数...
  • mengtianyalll
  • mengtianyalll
  • 2013年12月03日 21:12
  • 3081

系统操作日志设计(二)

上一篇《系统操作日志设计》,已基本介绍了为什么要系统操作日志和设计系统操作日志部分内容,如不清楚系统操作日志的请点这里。 :)       通了解《系统操作日志设计》,已基本明确我们不能通过clon...
  • jackljf
  • jackljf
  • 2010年07月20日 18:43
  • 5800
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统操作日志设计
举报原因:
原因补充:

(最多只允许输入30个字)