`

系统的domain修改记录log

 
阅读更多

1、要求的系统功能

     系统采用spring + hibernate。

     对对象的属性修改进行记录,记录的内容包括:类名、对象ID、修改时间、修改的属性名、修改前的值和修改后的值。

     对新增对象的属性进行记录。记录的内容包括:类名、对象ID、增加时间、属性名、插入的值。

     对删除对象的属性进行记录。记录的内容包括:类名、对象ID、删除时间、属性名、值。

     另外的要求,只对某一些类进行记录。如果有一个类如Order,它有Order Line,那么OrderLine的修改应该归入Order类中。

2、实现:

    a)新建一个接口,Logable,

    b)新建hibernate的监听类,用来监听onSave,onFlushDirty, onDelete, afterTransactionComminted四个方法

    分别用来:取得对象的插入数据、对象的更新数据、对象的删除数据、在成功commit后将写log。(关于这部份的操作,我们让HistoryStorage类来做)

   在spring的配置文件中,关于hibernate的配置中加入这个监听器。

   从spring的源码中,我们可以看到:这个监听器是属于session的,所以不用做异步处理。

   c)我们在HistoryStorage中,都是将属性转化成String格式,然后存储在N个EntityLog类中(有多少个Logable对象进行修改,就有多少个EntityLog)。

   d)写log。要有两个步骤:写数据库和将操作信息写进文件进行存储。

    将EntityLog保存成json的格式。存储的地点根据对应的存储方式来决定。(对象的存储方式在配置文件中设定)

   由存储方式生成存储路径,并将json数据写入之后,将类名、对象ID、操作类型(增删改)和存储路径写入数据库。

  e)读log。有两种方式的读log:读对象的修改统计和某一次修改的具体信息

   读修改统计:从log数据表中读出log信息。

   读一次的具体修改信息:从存储路径读出json数据,转化为EntityLog对象,用户自定义输出格式。

 

这其中,用户可以自定义的地方是:

1、LogWriter/LogReader:getPath和write方法/parsePath和reader方法

2、用户页面如何显示Log的统计和log的详细信息

 

明天贴代码

 

 

 

 

 

分享到:
评论
1 楼 Jerrick 2011-12-01  
说好的代码呢

相关推荐

    RocCms 乐克内容管理系统 (原RocbySay) v4 SP1.zip

    RocCms更新日志: 数据缓存机制 邮箱详细内容页列出和此人对话的前10条记录以便查看历史 管理员操作日志功能 首次安装不用进入安装文件,进入首页自动判断 系统设置增加是否启用邮件系统与找回密码的邮件内容...

    Oracle9i的init.ora参数中文说明

    监听程序进程需要一个监听地址, 以便处理系统所用的各个网络协议的连接请求。 除非 MTS_MULTIPLE_LISTENERS=TRUE, 否则每个条目都必须有一个独立的相邻值。此参数自 8.1.3 版起已废弃 语法 : (ADDRESS=(PROTOCOL=...

    oracle数据库设计规范.doc

    密级: 数据库设计规范 (oracle版本) <文档编号> "版 本 号 " "发布日期 " " "修 改 人 " "修改日期 " " "审 核 人 " "审核日期 " " "审 批 人 " "审批日期 " " 修订记录 "版本号 "发布日期 "修改人/修 "审核人/...

    windowsnt 技术内幕

    Windows NT中的审核(Audit)事件简介 规划并实现审核策略 打开文件、文件夹及打印机的审核功能 使用事件查看器检查审核事件 安全性日志(Securty Log)的归档 使用服务器管理器查看正在使用的资源 断开用户与服务器的...

    godaddy-dns-updater:Docker映像更新GoDaddy DNS条目

    parkerhemphill / godaddy-...如果该IP地址与外部IP不匹配,则会推送一个curl POST来更新DNS记录3:容器启动和对DNS记录的任何更改都记录在容器内部的/ tmp / <DOMAIN> -log中,此目录可以导出以使日志在容器外部可用

    RED HAT LINUX 6大全

    8.3.4 FTP的日志文件—/var/log/ xferlog 149 8.4 FTP管理工具 149 8.4.1 ftpshut 149 8.4.2 ftpwho 150 8.4.3 ftpcount 150 8.5 使用FTP客户程序 150 8.5.1 autoexpect 152 8.5.2 ncftp 152 8.5.3 tftp 153 8.5.4 ...

    NET命令指令集-如何在windows下使用net命令行

    <29>eventlog 以下这些SERVICE只能在NT SERVER上使用 << 1>> )file server for macintosh <<2>>gateway service for netware <<3>>microsoft dhcp server <<4>>print server for macintosh <<5>>...

    CT6013:Denny-Jo Miller的CT6013应用(s1707031)

    CT6013 CT6013 S1707031(“主要”分公司2) ... 笔记: 自定义日志记录可用,并且当前位于您的glassfish配置(在我们的示例中为domain1)下: (glassfish位置)\ glassfish \ domains \ domain1 \

    网络组建域管理课件2

    (1)将BIOS中计算机启动时的系统引导顺序修改为CD-ROM、C、A或CD-ROM、A、C。 (2)根据系统提示进行安装操作 方法四安装步骤 (1) 首先将计算机内的BIOS设置为从CD-ROM启动,把Windows 2000 Server安装盘放入...

    LiveSmart视频聊天独立程序带安装教程

    变更日志 v1.0.2-2019年1月17日 -UI更改; -对PHP信号发送器的次要修复; v1.0.1-2019年1月15日 -添加了WordPress插件; -增加了在iframe或新标签页中打开视频窗口的可能性; -修复样式和脚本; v1.0.0-2019年1月12日...

    ASP.NET程序中常用的三十三种代码.txt

     /// 事件日志记录类,提供事件日志记录支持  ///  /// 定义了4个日志记录方法 (error, warning, info, trace)  ///  ///  public class ApplicationLog  {  ///  /// 将错误信息记录到Win2000/NT...

    ASP.NET常用代码

    /// 事件日志记录类,提供事件日志记录支持 /// /// 定义了4个日志记录方法 (error, warning, info, trace) /// /// public class ApplicationLog { /// /// 将错误信息记录到Win2000/NT事件日志中 /// 需要记录...

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    geodata-br:巴西提供多种语言和格式的免费开放式公共领域地理数据

    , UBJSON , XML和YAML 数据库: Firebird Embedded , SQL和SQLite 3 电子表格: Microsoft Excel电子表格, Office Open XML工作簿和OpenDocument电子表格表格文字: CSV和TSV 变更记录更改详细记录在更改日志中...

    eventhorizo​​n:Go的CQRSES工具包

    添加事件源的主要好处是可跟踪更改,例如可以在审核日志记录中使用。 此外,过去发生的“不正确”事件(例如由于错误)可以通过使当前数据“正确”的事件来补偿,因为这是基于事件的。 从主题的主要作者/贡献者之...

    微软活动目录管理管理简明手册

    而如果活动目录中的资源对应的是LDAP标识,那么只需要DNS中有这个标识的定位记录就可以很方便地供用户查找资源,并寻址到相应的位置上。' u* [+ L2 m- \ j: h: L. r7 u 有关DNS服务器的配置,读者可以参考《电脑报...

    Grails权威指南

     3.6.2 日志记录(logging)和环境  3.7 grails命令行工具  3.7.1 在不同的端口上运行grails应用程序  3.7.2 打包war存档文件(warcarchive)  3.8 使用grails控制台(console)及命令解释程序...

    Oracle 主要配置文件介绍

    如果设置为 N 表示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动 和关闭 1.2.3 数据库实例初始化...

    urlNeXT-crx插件

    -在前后历史记录上使用滑动手势时,请在Mac OS X中的Google Chrome动画之后更改动画箭头。版本1.7.3(2011年11月23日)-很少调整链接扫描程序以覆盖某些站点。版本1.7.2(2011年11月4日)-链接扫描程序现在可扫描...

Global site tag (gtag.js) - Google Analytics