操作日志设计

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

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

为什么要做操作日志?

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

 

系统设计

场景

我们现在有一张表叫Employee:

IDintNamenvarchar(50)Gendernvarchar(2)DateCreateddatetimeCreateUsernvarchar(50)

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

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

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

IDintNamenvarchar(50)Gendernvarchar(2)DateCreateddatetimeCreateUsernvarchar(50) LogCreated datetime OperationType int

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

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

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

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

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

 

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

 

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

数据库设计

系统日志设计

包括三个表,

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

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

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

 

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

日志列表:

日志管理列表

查看日志内容:

查看日志内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
管理系统操作日志是指在管理系统中记录用户操作行为的一种记录方式,可以用来跟踪用户的操作行为,监控系统的运行情况,以及追查系统中出现的问题。 在设计管理系统操作日志时,需要考虑以下几点: 1. 记录内容:需要记录哪些用户操作行为?一般来说,需要记录用户的登录、登出、新增、修改、删除等操作。 2. 记录格式:操作日志应该采用什么格式进行记录?可以考虑采用JSON格式进行记录,方便日后的数据处理和分析。 3. 存储位置:操作日志应该存储在哪里?可以考虑将操作日志存储在数据库中,或者存储在文中。 4. 记录方式:操作日志应该如何记录?可以考虑通过代码编写,在关键业务逻辑处添加日志记录代码,或者通过AOP(面向切面编程)的方式进行记录。 以下是一个操作日志类的示例代码: ```java public class OperationLog { // 用户名 private String username; // 操作时间 private String operateTime; // 操作内容 private String operateContent; // 操作结果 private String operateResult; public OperationLog(String username, String operateTime, String operateContent, String operateResult) { this.username = username; this.operateTime = operateTime; this.operateContent = operateContent; this.operateResult = operateResult; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getOperateTime() { return operateTime; } public void setOperateTime(String operateTime) { this.operateTime = operateTime; } public String getOperateContent() { return operateContent; } public void setOperateContent(String operateContent) { this.operateContent = operateContent; } public String getOperateResult() { return operateResult; } public void setOperateResult(String operateResult) { this.operateResult = operateResult; } } ``` 该类中包含了操作日志需要记录的基本信息,包括用户名、操作时间、操作内容和操作结果等。在系统中进行关键操作时,可以通过该类进行操作日志的记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值