问题:如何做应用程序日志管理!

zww80216 2003-03-07 01:33:11
在一个事务处理系统中,有各种操作权限的操作人员从事其权限范围内的操作。事务处理日志要记载这些操作的全部历史记录,它对监测系统运行状态,为事后监督提供直接依据,对防范系统安全有重要作用。
讨论如何设计出满足事务处理基本特征的日志管理工具。基本设计思想是:定义日志管理的范围和内容,将日志管理设计成灵活的可重新定义方式,系统需要将哪些操作记入日志,完全由系统运行期间的系统管理设定,而不是在程序编制过程中事先设定好而不能整改。这种设计方法有两个优点是明显的。一是在程序开发其间,开发小组的编程人员并不需要每个人对自己设计的功能模块都编写日志处理子模块,而只是将向编写日志处理模块的编程人员说明哪些业务操作需要记入日志,并选择日志应填写哪些具体内容,这将大大减少编程代码,降低开发的工作量,提高开发效率,同时程序的模块化程度更高。二是系统投入运行后,系统的高级维护人员可以按照实际工作的需要来决定全部选择或部分选择系统可以已设定可以记入日志的操作事件,更具灵活性。
1、日志管理的数据库设计
日志管理的对象是进入系统的业务操作人员的操作事件。在开发环境下,这些操作反映在应用程序中可以抽象为以下几种操作:
1)点击某一个菜单项 
2)进入了某个窗口
3)点击了某个窗口中的控件,如,按钮、下拉框、单选按钮、多选按钮、单行编辑器 等等,
4)向窗口控件中输入了新内容 如在datawindow 中进行了插入、删除、更新、检索等操作,在编辑掩码器中输入了新值等 
5)退出了某个窗口
这些操作最终抽象成为对某个父对象的某个对象进行了某项操作,以此在mysql数据库中建立日志事件定义表kz_rz_dat,它定义了需要记录日志的操作,其库结构为:
rz_xh integer 序号
dongz integer 动作  1,进入窗口 
2,退出窗口 
3,点击了某个窗口中的控件
           4,向某些窗口控件输入了新内容
           5,点击某一个菜单项 
czdx string 操作对象名 可以是进入或退出的窗口名、在窗口中点击的控件的控件名、所点击菜单项的菜单名、或者是改变了属性或内容的窗口对象或控件的名称
fdx string 操作对象的父对象名
日志表dj_rz_log记录操作操作的内容,如:操作的日期时间、操作员、操作所在的计算机名、IP地址或MAC地址、操作动作、操作对象名、操作对象的父对象名等。
字段名 数据类型 说 明
Rzxh long 日志序号
Riqi datetime 日期和时间
Czyh C6 操作员代号
Czyxm C10 操作员姓名
Jqm C10 机器名
Macdz C18 MAC 地址
Ipdz C12 Ip地址
Czdx C40 操作对象,对象为窗口时,其值为窗口名 对象为窗口控件时,其值为控件名 对象为菜单时,其值为菜单名
Dongz Integer 操作动作, 1-进入2-退出 3-点击 4-更改控件内容
dxxsmc C40 对象显示名称,对象为窗口时,其值为this.title,对象为控件时,其值为this.text,对象为菜单时其值为this.text
fdx C40 操作对象的父对象名, 操作对象为菜单和窗口时,其值可为空 操作对象为窗口控件时,其值为所在窗口

2、修改底层用户对象的相关事件
在应用程序,如果所有对象如菜单、窗口、窗口控件都通过继承上述对象而生成,我们就可以只添加或改这些对象的事件和函数,就能使所有继承对象都获得这些函数和事件。应用在日志管理上,如果在w_sheet的open事件中加入一段脚本,通过检索kz_rz_dat表,判断打开本窗口这一动作是否要记录日志,若需要记录,将相关内容记入dj_rz_log表。这样,所有从w_sheet继续而来的窗口具有了打开窗口的日志管理功能。依此类推,在窗口w_sheet的close事件中加入脚本,所有从w_sheet继续而来的窗口具有了关闭窗口的日志管理功能,在菜单m_menu的click事件中加入脚本,所有从m_nemu继续而来的菜单都有日志管理功能, 在可视用户对象u_cb的click事件中加入脚本,所有从u_cb继续而来的按钮具有了点击按钮的日志管理功能。等等。
3、日志管理功能
日志管理功能包括两个方面,一是定义需要记录日志的操作,二是对记录的日志按时间、操作员、操作动作进行查询、打印,以及定期清空日志等日志维护工作。这些操作都应该由系统管理员完成。
1)定义日志记录事件
定义日志记录事件实际上是对kz_rz_dat表的维护。其功能为增加、删除、查询日志记录事件项。为此,要建立一张应用程序功能与应用程序中用户对象名的对照表,系统管理员通过选择选项来确定需要记录日志的事件。如图:
数据窗口中显示了已定义的日志记录操作事件,如果要删除某一事件,可以在数据窗口中选中该行,点击删除钮即可。增加某一事件,可以先选择操作下拉框,选择操作动作,在对象下拉框中选择本操作的对象,(如动作为“打开”,则在对象下拉框中提供了所有可以打开的窗口),再根据本对象确定其父对象。选择了这三项后点击增加钮,即可将此事件加入日志记录定义表中,以后,此操作将要记录操作日志。
2)日志维护
日志维护功能主要是检索、打印和清空日志。这里我们提供了按时间、操作员姓名、操作机器的IP地址、操作动作排序进行检索,并可将其打印以备存档。在日志增长是一定长度时可以将其清空。



大家有什么看法尽管说。
...全文
993 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zww80216 2003-03-16
  • 打赏
  • 举报
回复
到哪儿找MessagBean的原代码?
有例子吗?
zhaoxichao 2003-03-12
  • 打赏
  • 举报
回复
可以用MessagBean实现
zww80216 2003-03-07
  • 打赏
  • 举报
回复
程序的主界面是用jsp+javabeans+mysql实现的.

那么大家如何用javabeans将上述功能实现呢?

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧