ASP.NET全栈开发日志模块之操作日志的设计

应用程序中的日志大致分为三种

第一种:用于生产模式下追中bug的异常日志。(这类日志相信大家都懂)

第二种:用于记录重要操作的行为日志。(这类日志主要作用是溯源,行为主要有三种:增、删、改)

第三种:用于记录历史浏览的消息日志。(这类日志主要记录用户的浏览痕迹)

消息日志和行为日志有点相似,都有溯源的作用,但它们区别很明显。

消息日志记录的是所有操作信息,比如 “gxqsd 登录了 系统 2018-7-27 23:46:10” , "gxqsd 访问了用户管理首页", “gxqsd 查看了 liming 的个人信息”,总而言之他更像一句话,也像是浏览记录,我们针对每一个消息日志存储一个Url就能依次回溯。(所以消息日志不包含对数据的操作,那属于行为日志)

行为日志主要是记录数据的变化,比如 "gxqsd 新增了一个角色 " 这时候触发了新增操作,我们希望将这个行为记录下来,如果只是记录了 “gxqsd 新增了一个角色” 那显然他就有点像消息日志了,但它又不能用于做历史记录。所以作为行为日志最重要的是要记录数据的变化。因此针对 "gxqsd 新增了一个角色”,正确的办法应是将新增的角色实体信息存储下来。

接下来用一张简单的图来描述数据库表之间的关系。

我们定义一个日志记录表Logging,每一行数据表示一条行为日志。用LogDataDetial表示行为日志的详细信息

其中Logging表中TargetId表示实体操作的目标对象,比如"gxqsd create a new user" TableName 则是"User" 而TargetId则表示这个新增的用户的Id,通过Table和TargetId我们最终就能在追溯的时候定位到具体实体。

LogDataDetail表就挺简单的了,Logging表示每一条行为日志,而每一个行为日志所改变的数据是以实体为单位的,实体又有多个字段,为了能详细追踪实体数据的变化,LogDataDetail将实体的每一个属性分解成犹如键值对的形式。又通过LogId将他们与具体行为日志关联起来。而每一个Logging又与操作用户关联起来。

原文地址:https://www.cnblogs.com/Gxqsd/p/9380325.html

时间: 2024-08-29 15:25:54

ASP.NET全栈开发日志模块之操作日志的设计的相关文章

python全栈开发-logging模块(日记专用)

一.概述 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,其中他们级别大小关系 debug() <info() <warning() <error() <critical()  级别越低打印的日记等级就越

Python全栈开发--socketserver模块和验证客户端链接的合法性

验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_key=b'linhaifeng bang bang bang' def conn_auth(conn): ''' 认证客户端链接 :param conn: :return: ''' print('开始验证新链接的合法性') msg=os.urandom(32) conn.sendall(msg) h=

2018-06-27-Python全栈开发day22-part2-xml模块和re模块-正则表达式介绍

1.xml模块 xml模块是在json出现之前,普遍使用的文件类型, <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year updated="yes">2010</year> <gdppc>141100</gdppc> <neighbor directio

3.ASP.NET全栈开发之前端校验(基于Vue的自定义校验)自实现小型验证框架

前面分享了两篇关于.NET的服务端校验的文章,在系统里光有服务端校验虽然能够勉强使用,但会出现许多不愉快的体验,如上一章我在最后提交的时候填写了3个表单,在仅有最后一个表单出现了错误的时候,虽然达到了校验功能,表明了错误,但我前面三个表单的数据都被干掉了啊.再则比如注册的时候我填了那么多东西,我提交后你却告诉我已经被注册了,如果不是真爱,大概会毫不留情的Alt+F4 再也不见啦. 为了解决这个问题,我们必须在系统中采用双校验,前端校验那么多,咱们ASP.NET MVC创建时默认会引入jquery

Python全栈开发——时间模块和随机模块

#时间模块 import time import datetime print(datetime.datetime.now()) #时间戳 print(time.time()) #将时间戳转化为结构化时间 print(time.localtime(time.time())) #将结构化时间转化为时间戳 print(time.mktime(time.localtime())) #将结构化时间转化为字符串时间 strftime print(time.strftime("%Y---%m-%d %X&q

Flask Vue.js全栈开发

Flask Vue.js全栈开发 1. Flask Vue.js全栈开发教程系列 Flask Vue.js全栈开发|第1章:创建第一个Flask RESTful API Flask Vue.js全栈开发|第2章:Vue.js通过axios访问Flask RESTful API Flask Vue.js全栈开发|第3章:Flask设计User用户相关API Flask Vue.js全栈开发|第4章:Vue.js调用API实现用户注册/登录/退出 Flask Vue.js全栈开发|第5章:个人主页与

实习模块vue+java小型全栈开发(三)

实习模块vue+java小型全栈开发(三) --dx 背景 首先,先给自己一个答案:这篇博客我定义为(三),因为之前的两个模块页面,内容都是一样的,但是被改了几次需求,就一直拖着没有上传. 今天是真正意义上的全栈开发,用的都是当前市面上的最新的框架前端是vuejs,后端springBoot全家桶,知识点很全,而我正好勉强的把前端知识赶完,然后进行的这次模块开发,并且这次模块开发给了我很大的惊喜. 全栈果然很神奇. 模块简介:点击考勤之后,调到一个页面,完成这个页面的所用功能. 完成之后的页面:我

老男孩Python高级全栈开发工程师【真正的全套完整无加密】

课程大纲 老男孩python全栈,Python 全栈,Python教程,Django教程,Python爬虫, scrapy教程,python高级全栈开发工程师,本套教程,4部分完整无缺,课程完结,官方售价6800元. 课程全部都是不加密,全部都有声音-不是网上那种几块钱十几块钱那种加密没有声音或者课程不全,贪便宜花冤枉钱不说都会严重影响学习,耽误大量时间! 本套全栈课程,不说完全媲美线下教学,只要你肯坚持,不会比面授差太多-坚持学完找一份python开发类的工作完全没问题,另外对于学习方面的投资

未来物联网全栈开发 —— JavaScript OR Python?

物联网开发涉及面庞杂,开发周期长,所以我们必须寻找一种覆盖面广的编程语言和方法. JavaScript 支持 HTTP 和 JSON .支持函数式编程.可提供交互式环境等特点堪称适用于物联网全栈开发: Python 作为一种胶水语言,可在物联网及嵌入式系统中承担大量任务,并部分替代以上语言. ??物联网是新一代信息技术的重要组成部分,也是"信息化"时代的重要发展阶段,不太清楚的可以看上篇文章<IoT领域的故事.经历.技术实战>,正所谓语言无国度,无论是 Js 还是 Pyth