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


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

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

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

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

 [/img]

所有的异常(非运行时)都为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,比较丑陋难看。
不知道有没有参考实现方式?

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

猜你喜欢

转载自twtjcmpl.iteye.com/blog/1296448