系统操作日志设计(一)

后台管理系统操作日志模块设计思路 背景对于很多后台管理系统来说,权限较多,对系统操作的人也会多。如此以来,对于一些操作的记录就非常有必要了,从而可以清楚的追踪对系统进行操作的人以及做了哪些操作,并且可以快速排查定位一些问题。下面简单说一下自己设计的思路。 阅读详情
前言

 

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

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

为什么要做操作日志?

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

 

系统设计

场景

我们现在有一张表叫Employee:

IDint
Namenvarchar(50)
Gendernvarchar(2)
DateCreateddatetime
CreateUsernvarchar(50)

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

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

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

IDint
Namenvarchar(50)
Gendernvarchar(2)
DateCreateddatetime
CreateUsernvarchar(50)
LogCreateddatetime
OperationTypeint

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

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

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

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

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

 

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

 

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

数据库设计

系统日志设计

包括三个表,

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

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

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

 

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

日志列表:

日志管理列表

查看日志内容:

查看日志内容

 

系统操作日志记录 使用aop切面编程进行日志记录并入库 上代码: 系统日志service,dao,mapper,bean package com.tzc.webapi.service.interfece; import com.github.pagehelper.PageInfo; import com.tzc.webapi.bean.SysUserLog; import com.tzc.webapi.bean.... 阅读详情

相关推荐

制作操作系统日志页面

开发工具与关键技术:制作操作系统日志页面 作者:冉启东 年级:1804 撰写时间:2019年06月15日 本技术文献起止时间 2019年 06月08日~ 2019年06月18日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 导入layui.css实现表格,代码局不...

weixin_44540672的博客 2164

日志表设计优化与实现

摘要 这篇文章从日志表问题引入、日志表的共有特性、日志表的设计需求、设计思路以及设计详细实现的角度,阐述了在SQL Server数据库中如何最优化设计日志表来降低系统资源的占用和提高系统吞吐量。 问题引入 在平时与客户服务与交流过程中,我们不止一次的被客人问及这样的场景:我们现在面临如何设计SQL Server日志表方案,如何最优化设计数据库日志记录表。因为,日志表设计会面对如下问题: 表记录数大:日志表由于记录了应用程序的很多操作日志,有的业务有很多步骤,甚至每个步骤操作都会被记录到日志表中,所

wangxin3618的博客 2126

升鲜宝日志功能模块设计说明

介绍了升鲜宝供应链管理系统的日志功能模块设计方案。系统通过构建统一日志中心,覆盖操作、业务、接口等8类日志类型,重点保障单据审核、库存过账等核心业务链路的可追溯性。采用分层架构设计,实现日志采集、处理与存储解耦,支持异步写入、敏感信息脱敏和按月分表存储。文档明确了各类日志的字段规范、数据库设计及技术实现方案,强调通过traceId实现全链路追踪,并提供日志查询权限控制。实施将分三期推进,最终形成具备审计追责、问题排查、系统监控等能力的完整日志体系。

升鲜宝生鲜配送供应链管理系统源代码,包括Java Spring Boot 后端API、B2B订货商城、采购协同助手、客户CRM、供应商协同端、司机配送端、安卓分拣端、PC端供应链客户端系统,门店收银系统源代码。 400

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

上一篇《系统操作日志设计》,已基本介绍了为什么要系统操作日志和设计系统操作日志部分内容,如不清楚系统操作日志的请点这里。 :) 通了解《系统操作日志设计》,已基本明确我们不能通过clone的方式来做日志的设计,因为...

cuibinmo3519的博客 564

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

  管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。   相关文章链接:《系统操作日志设计》   在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?   在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。   打个比方,用户需要购买一样宝贝,已经到了下单那步...

weixin_34237596的博客 3933

操作日志产品设计

操作日志是一个经常被忽视,但在关键时刻不被甩锅的好功能,那操作日志该怎么设计呢? 对开发而言,执行insert、update、delete这3个操作的时候,就需要进行日志,而日志执行的先后顺序如下: 对产品经理而言,操作日志的设计不复杂,做好以下3点即可: 1、操作日志记录点,一般设置在重要功能、敏感信息和多人协作处。 2、主要考虑增、删、改、查4类最常用操作类型,有些业务场景还需考虑启用/禁用、审核/反审核、导出/打印、导入等比较常用的操作类型,其他的操作类型基本不用考虑。 3、..

zmy_424的博客 5051

java 日志操作日志_后台管理系统之系统操作日志开发(Java实现)

packagecom.ideal.manage.guest.service.log;importcom.alibaba.fastjson.JSONObject;importcom.ideal.manage.guest.bean.DTO.PageDto;importcom.ideal.manage.guest.bean.log.Log;importcom.ideal.manage.guest.con...

weixin_36256917的博客 647

在MATLAB产生正态(Gauss)分布随机数

在 MATLAB 中内置了有产生标准正态(Gauss)分布的随机数函数,使用方法如下: 其中 为产生矩阵的行数和列数, 为产生矩阵的个数,产生的矩阵中的每个元素均为服从 N(0,1)N(0, 1)N(0,1) 的标准正态分布的元素。使用如下命令产生一个 的服从的随机数矩阵: 绘制图像效果如下: 可以看到这里随机数服从 的标准正态分布。假设 X∼N(0,1)X\sim N(0,1)X∼N(0,1),则 3X+33X+33X+3 服从 N(3,9)N(3,9)N(3,9) 分布,因此我们要产生服从 N(

程序必须为人类阅读而编写,并且仅仅碰巧可以让机器执行 3万+

系统操作日志设计

前言   我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录、或者更新某条数据都需要跟踪到变化的内容、或者删除数据时需要记录谁删除了,何时删除了,以便误删后可以通过系统的XXX功能来恢复误删的数据。 我将这种功能称为操作日志 为什么要做操作日志? 其实上文也描述了一些,其主要目的就是跟踪到每一个用户在系统的操作行...

weixin_34194551的博客 913

突发E层(Es层):短波通信中的“意外惊喜”与“隐形杀手”全解析

本文深入解析了突发E层(Es层)在短波通信中的双重作用,既可能带来超远距离通信的“意外惊喜”,也可能成为通信链路的“隐形杀手”。通过分析Es层的形成机制、时空分布规律及实战应用技巧,帮助通信爱好者与专业人员更好地利用或应对这一电离层现象,提升短波通信的可靠性与效率。

weixin_30443813的博客 823

帕塞瓦尔定理(Parseval‘s theorem)的证明

帕塞瓦尔定理(Parseval's theorem)表明了信号在时域和频域上的能量相等。

weixin_42428226的博客 2万+

操作日志表设计

管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。     在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?   在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。   打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,...

Nemo的笔记本 2万+

SMR实战指南:从GWAS数据到eQTL分析的完整流程

本文提供了基于汇总数据的孟德尔随机化(SMR)实战指南,详细解析了如何从GWAS汇总数据出发,整合eQTL数据,完成从数据准备、BESD格式转换到最终SMR与HEIDI分析的完整流程。文章重点阐述了核心操作步骤、常见避坑技巧与结果解读,旨在帮助遗传学研究者高效掌握这一分析基因表达与复杂性状潜在因果关系的强大工具。

weixin_29246195的博客 1068

【产品设计】用户操作日志

日志记录了代码的执行过程。根据目的不同,可分为系统日志和操作日志。1)系统日志记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。开发人员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。由于系统日志主要是为开发人员排查问题提供依据的,因此可读性没那么高。2)操作日志记录所有用户在系统中的操作过程和操作结果,如登录记录、修改记录等。操作日志主要是为用户服务,帮助他们查看历史操作记录,因此对可读性要求较高。

自学吧 2193

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

代码接单:用 ComfyUI 搭建电商模特换装工作流(保姆级教程)

在闲鱼和小红书上,搜一下“AI 模特图”或者“服装换模特”,你会发现大量的接单需求。太贵:请个外模拍一套图,动辄几千块。太慢:寄样品、排期、拍摄、修图,半个月过去了。太卷:竞对都在上新,你还在等图。“给我一张你的衣服平铺图(或假人图),我 10 分钟给你生成真人上身图,一张只要 50 块。对于商家是省钱,对于你是纯利润。为什么不用 Midjourney?因为 MJ 抽卡不可控,无法保持衣服版型一致。只有 ComfyUI,才能做到精准控制,实现工业化量产。

BUG猿的博客 1777

【操作日志】一次失败的系统操作日志方案设计

操作日志几乎存在于每个系统中,在后台系统中属于基础能力,是一个必备功能。操作日志要做到简单易懂。如何让操作日志不和业务逻辑耦合,如何让操作日志的内容易于理解,让操作日志的接入更加简单,这是操作日志模块设计的重点。现在看下来我们实现了一个与业务逻辑、代码完全分离的操作日志模块,看起来满足了我们最开始的需求。目前看下来,canal记录操作日志的方案行不通,看来各司其职还是有道理的,canal的使用场景还是在数据同步的方向。

九局下半 1462

【推荐100个unity插件】将UE的资源导出到unity使用—— Exporter for Unreal to/for Unity插件

Unreal to Unity导出器是一款帮助开发者将Unreal Engine项目转换为Unity的工具。文章详细介绍了使用步骤:1)安装虚幻引擎并创建项目;2)在Plugins文件夹中安装导出插件;3)导入UE资产到Content文件夹;4)配置导出参数并完成转换。文末推荐了多个Unity开发专栏,涵盖C#编程、2D/3D开发、特效制作等内容。作者向宇提供了博客地址,欢迎读者交流学习。该工具能有效提升项目迁移效率,适合需要跨引擎开发的用户使用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 850

[操作系统] 策略模式进行日志模块设计

本文探讨了在C++中如何利用策略模式构建一个灵活且可扩展的日志系统。日志系统在IT开发中至关重要,用于问题定位、性能分析和安全审计。设计模式是解决通用问题的抽象方案,策略模式通过封装不同算法使其可互换使用。日志系统的基本构成包括时间戳、日志等级、日志内容和元数据。

kevin_blog 1289

黑猫带你学UFS协议第17篇:UFS安全模式详解(Secure Mode)

本文详细介绍了UFS协议中的安全模式,包括Erase, Discard, Purge和Wipe Device操作。Erase用于永久删除数据并确保无法恢复;Discard不保证数据清除;Purge类似于Sanitize,清除内部未映射的物理块数据;Wipe Device则是格式化设备。这些操作涉及逻辑单元、擦除单位、相关寄存器配置等,确保数据安全。" 126036669,12409270,MySQL 8.0 开窗函数详解,"['数据库理论', 'SQL']

黑猫奥利奥的博客 2559

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java实战:SpringBoot 业务操作日志功能设计

本文将详细介绍如何在SpringBoot项目中设计业务操作日志功能,包括日志系统的基本概念、设计原则、具体实现方式等。通过阅读本文,我们将了解到如何记录和管理业务操作日志,并可以将这些知识应用到实际项目中。

oandy0的博客 6064

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 说文TeamViewer 的自启动功能
下一篇: 系统操作日志设计(二)-代码实现
jackljf
博客等级 码龄19年 48粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值