论坛首页 Java企业应用论坛

日志保存及自定义查询需求,希望大家提供建议

浏览 2526 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-12-07   最后修改:2011-12-07


以前一直是码家,只会编码,这是第一次做设计。想问问大家伙的意见。
项目介绍:
      项目为中间交易前置系统,主要是对扣款、对账及其它些辅助功能;XML报文为交互载体,通过JMS、EJB及MQ为通信技术;。

问题描述:
      系统为纯后台操作,基本无界面,异常信息不会直接反映到前台;有时会出现扣款扣重现象。
      由于涉及金钱,对交易的状态要求较高,但当出现异常无法快速定位原因及交易的状态。
      只能让运维人员查找log日志,效率及其低下。而且涉及多个部门系统,沟通存在障碍。

需求:
    1、现有需求要求通过系统界面能够查找异常堆栈信息、错误原因及其相关建议解决方案。
    2、能查询到每笔交易当前各阶段的状态,以及最终状态,若失败说明错误原因。
    3、提供自定义查询,方便系统对数据的查询统计;

解决方式:
针对需求一:
主要是重构异常信息,加入异常码,异常信息依赖系统现有的log4j记录到数据库,再根据异常码提供建议解决方式。
异常重构主要设想如下图:

所有的异常(非运行时)都为BaseException子类,这个已经被定下来了;
系统现有日志记录主要是通过log4j,并且异常信息基本都会通过输出,我现在的设想依赖于log4j实现,
在配置文件中新增log4j.appender.DATABASE=com.utils.log.appender.JDBCAppender
在JDBCAppender实现数据日志保存,可以保存些业务信息及系统信息,如:应用IP及应用名;
暂时设定的日志属性有:jylx(交易类型),className,methodName,xtsj,loglevel,exceptionCode,message,exception,threadName,HOSTNAME,IP
这样集群下日志也可以统一管理。
这相我自己已经简单的实现了下,但不了解log4j原理,也不知道在实际应用中会产生什么情况。
然后在加个前台查询功能,针对异常信息进行查询。

不知道大家有什么修改建议或其它实现方式?

需求二:
看了在论坛看了些的帖子,有的建议用AOP记录,或与业务藕合,在一起保存。
由于记录是交易的状态,比较重要,且存在批量的交易,与业务一块保存,准备写个公共方法用于保存,根据交易信息关联记录各阶段的状态;

需求三:
自定义查询以前自己有过简单、丑陋的实现。
思路主要是编写个SQL,根据SQL在界面上设置查询结果列名及查询条件,保存到应用中。
查询时,根据设置的查询结果及查询条件生成查询界面。
在前后台通过XML定义交互接口。
但定义的接口比较简单,及前台直接用的JS,比较丑陋难看。
不知道有没有参考实现方式?

希望大家提供一些建议。。。

  • 大小: 66.9 KB
   发表时间:2011-12-07  
需求1,的确是应该构造baseException
需求2,如果每个业务方法都添加保存状态的method,不知道改造量如何?如果采取AOP技术,可以减少改造量,对于批量的业务,应该还是在方法中添加。
需求3,
(1)直接支持在页面写SQL语句,然后后台执行。缺点是使用人员需要懂得SQL,不同的数据库语法可能会有差别。
(2)提供图形化的字段展示,通过选择表和字段,来完成查询。
会很丑吗?有多愁丑??
0 请登录后投票
   发表时间:2011-12-07  
cectsky 写道
需求1,的确是应该构造baseException
需求2,如果每个业务方法都添加保存状态的method,不知道改造量如何?如果采取AOP技术,可以减少改造量,对于批量的业务,应该还是在方法中添加。
需求3,
(1)直接支持在页面写SQL语句,然后后台执行。缺点是使用人员需要懂得SQL,不同的数据库语法可能会有差别。
(2)提供图形化的字段展示,通过选择表和字段,来完成查询。
会很丑吗?有多愁丑??



终于有人回复了:
关于需求1,主要不知道通过log4j这种方式效果没怎么样。没有具体了解过原理,或者能有其它实现方式不,希望有经验的兄弟姐妹能交流下。
关于需求2,整个系统大概有20几种交易类型吧,只有涉及金钱的交易进行状态记录,已经明确只有哪些交易需要记录,量不会太大,只是无法知道在其它系统具体的状态,如超时或返回状态就为状态不明。
关于需求3,一般定义SQL都是运维人员,客户会告诉运维人员他需要些什么数据,至于图形化字段展示,这个倒可以搞,但量大太,倒是可能以把列名记录下来,下次同一属性名配置可选!
主要是我简单实现的是用JS及HTML标签写的,原想用EXT JS或Jquery的组件实现,会好看点,但这些都没使用过,不知道工作量会有多大。

 

 

0 请登录后投票
   发表时间:2011-12-12  
回家四天,还是只有一个回复。。
悲催!!

0 请登录后投票
   发表时间:2011-12-12  
给个建议,使用AOP 去记录共性的日志 还是没有问题的。
可是业务流程日志,不建议使用AOP。毕竟复杂度比较高,所以我觉得“改造成本高 要改,改造成本低更要改。”
毕竟看需求说的是,是根据不同的交易阶段 去查询对应的日志。
另外,如果只是要查看错误的订单。建议你把错误模型考虑的比较全面,考虑不使用流程驱动,而是用错误类型驱动,去记录日志,你只要把excption的外抛流程处理好的。准确的记录没有问题,至于使用log4j的日志内容,我也不是很了解其内部机制。
但如果所有log4j的数据都入库的话,我觉得没必要。
甚至不如,自己在捕获 具体错误的时候,自己写日志 来的更清晰 和 明了。入库的信息更少。
希望能给你点帮助
0 请登录后投票
   发表时间:2011-12-12  
15210494746 写道
给个建议,使用AOP 去记录共性的日志 还是没有问题的。
可是业务流程日志,不建议使用AOP。毕竟复杂度比较高,所以我觉得“改造成本高 要改,改造成本低更要改。”
毕竟看需求说的是,是根据不同的交易阶段 去查询对应的日志。
另外,如果只是要查看错误的订单。建议你把错误模型考虑的比较全面,考虑不使用流程驱动,而是用错误类型驱动,去记录日志,你只要把excption的外抛流程处理好的。准确的记录没有问题,至于使用log4j的日志内容,我也不是很了解其内部机制。
但如果所有log4j的数据都入库的话,我觉得没必要。
甚至不如,自己在捕获 具体错误的时候,自己写日志 来的更清晰 和 明了。入库的信息更少。
希望能给你点帮助

什么是流程驱动?什么错误类型驱动,能解释下吧?
谢谢!
0 请登录后投票
论坛首页 Java企业应用版

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