论坛首页 Java企业应用论坛

通用操作日志系统设计。一次编写,所有项目共同使用!

浏览 25178 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2011-08-01   最后修改:2011-08-02

重新声明:用户操作日志,不是log4j那种程序日志。例如:管理员操作日志。

基于分表和自定义表结构的日志系统。真正足够灵活的,实现成本较低的通用日志架构。

新浪微盘下载PDF文档:http://t.cn/aY8XIT

   发表时间:2011-08-02  
全部将日志内容保存在数据库吗?
0 请登录后投票
   发表时间:2011-08-02  
现在的人真无聊
搞一个表设置一个appName、appIp 记录一个msg 都能弄出几页pdf
0 请登录后投票
   发表时间:2011-08-02  
日志记录到数据库,如果一天能跑出2G的日志,得多少条记录啊
0 请登录后投票
   发表时间:2011-08-02  
想法不错啊,这样做的确省了不少对于关于日志的考量,提高了开发效率,但是性能上其不是有所降低,而且我们一般的设计数据库,都是做逻辑上的删除,实际上这个时候已经有了日志,那么再弄个这个,感觉多余了些,不知楼主是怎么想的
0 请登录后投票
   发表时间:2011-08-02  
我还不如记文件方便呢
0 请登录后投票
   发表时间:2011-08-02  
日志有级别,其实一些error日志记在数据库里面也是可以的.
数据库统计数据比文件有优势
0 请登录后投票
   发表时间:2011-08-02  
好不通用的一个“通用设计”呀!
我们也做一个通用日志,不过,以组件形式发布,叫留痕组件。
主要思想是在数据库驱动上做代理,也就是DriverSpy implements Driver,支持多种数据库。
在使用组件时,把数据库的驱动使用这个DrivereSpy就Okay了。

做日志的方式最好不用做到数据库里,哪样的压力比较大,我们采用做文本滚动日志,把每一次的操作使用JSON的方式记录下来(使用read/write锁,防止异步操作),主要是一些SQL的语法不同,害怕打乱其中的结构。

另外,我们还可以把更新前后的字段做一个比较,原理是在对Execute的时候,再做一次查询。

我们组件最重要的作用是回滚数据,虽然叫回滚,但其实就是先做一个Base line的数据样板,然后把每次操作的日志累加起来,形成某日某时的回滚数据。

同样了,根据JDK和JDBC3/JDBC4的不同,我们发布了针对JDBC3和JDBC4的版本。

呵呵。
0 请登录后投票
   发表时间:2011-08-02  
heweiya 写道
好不通用的一个“通用设计”呀!
我们也做一个通用日志,不过,以组件形式发布,叫留痕组件。
主要思想是在数据库驱动上做代理,也就是DriverSpy implements Driver,支持多种数据库。
在使用组件时,把数据库的驱动使用这个DrivereSpy就Okay了。

做日志的方式最好不用做到数据库里,哪样的压力比较大,我们采用做文本滚动日志,把每一次的操作使用JSON的方式记录下来(使用read/write锁,防止异步操作),主要是一些SQL的语法不同,害怕打乱其中的结构。

另外,我们还可以把更新前后的字段做一个比较,原理是在对Execute的时候,再做一次查询。

我们组件最重要的作用是回滚数据,虽然叫回滚,但其实就是先做一个Base line的数据样板,然后把每次操作的日志累加起来,形成某日某时的回滚数据。

同样了,根据JDK和JDBC3/JDBC4的不同,我们发布了针对JDBC3和JDBC4的版本。

呵呵。


这个是很通用了,不过是否具有可用性呢?每次Update的时候,先做一次Query,有可行性吗?比如update table1 set age = 10, 一次更新成千上万条记录,你能通用的进行“更新前后字段”的比较吗?

斯如是,不如把数据库的Transaction Log分析一下,为你所用了。
0 请登录后投票
   发表时间:2011-08-02  
其实记在文件里面也是一样的 无非就是 查询的时候 要写些pl脚本而已
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics