zoukankan      html  css  js  c++  java
  • 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又与操作用户关联起来。

  • 相关阅读:
    黑马程序员简易聊天器笔记
    黑马程序员 最简单的浏览器
    Java 窗体布局
    黑马程序员交通系统
    黑马程序员–java 网络处理
    Swing入门级项目全程实录学习总结
    Swing入门级项目全程实录第7讲
    Swing入门级项目全程实录第3讲
    Swing入门级项目全程实录第2讲
    HTML基础教程
  • 原文地址:https://www.cnblogs.com/Gxqsd/p/9380325.html
Copyright © 2011-2022 走看看