一种异常信息记录方法及系统的制作方法

文档序号:10655201阅读:215来源:国知局
一种异常信息记录方法及系统的制作方法
【专利摘要】本发明公开了一种异常信息记录方法及系统,包括:当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应的异常信息;将所述异常信息单独记录到数据库。可见,在本实施例中,通过将异常信息单独记录到数据库,即将异常信息区和打印信息区分开,不仅增加了查询历史异常信息时的方便性,而且对查询业务逻辑流程会更清晰,并且通过数据库的特性,可以组合不同的查询条件对异常信息进行排查,增加了用户查询时的便利性,增加用户体验。
【专利说明】
-种异常信息巧录方法及系统
技术领域
[0001] 本发明设及异常信息记录领域,更具体地说,设及一种异常信息记录方法及系统。
【背景技术】
[0002] 目前大部分JAVA系统采用L0G4J方式记录日志信息,L0G4J是Apache的一个开放源 代码项目,是相对成熟的可重用开发组件,利用L0G4J不同的语言包可为不同语境系统提供 统一一致的日志组件模块,通过可配置文件来灵活进行配置,从而实现个性化的日志输出 格式、输出级别等。然而在日志文件中定位异常信息相对不方便,尤其是在正式环境面对大 量打印信息和异常信息时,比较难排查到历史异常信息。
[0003] 因此,如何记录异常信息是本领域技术人员需要解决的问题。

【发明内容】

[0004] 本发明的目的在于提供一种异常信息记录方法及系统,W实现更方便的查询异常 信息。
[0005] 为实现上述目的,本发明实施例提供了如下技术方案:
[0006] -种异常信息记录方法,包括:
[0007] 当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应的异 常信息;
[000引将所述异常信息单独记录到数据库。
[0009] 其中,将所述异常信息记录到数据库包括:
[0010] 将所述异常信息存入消息队列,并通过监听单元将消息队列中的异常信息存入数 据库。
[0011] 其中,将所述异常信息存入消息队列之前,还包括:
[0012] 检测所述消息队列中已存入的异常信息数量是否大于预定阔值;
[0013] 若否,则将所述异常信息存入所述消息队列;
[0014] 若是,则将所述异常信息存入日志文件中,并在检测到所述消息队列中已存入的 异常信息数量小于所述预定阔值时,将所述日志文件中的异常信息存入所述消息队列。
[001引其中,本方案还包括:
[0016]若在预定时间内检测到所述日志文件中有待处理的异常消息,则将所述待处理的 异常消息直接记录到所述数据库中。
[0017]其中,本方案还包括:
[001引接收异常信息获取指令;
[0019] 根据所述异常信息获取指令中携带的查询条件,从所述数据库中获取相对应的异 常信息,并通过终端进行显示。
[0020] 一种异常信息记录系统,包括:
[0021] 异常信息获取模块,用于当程序产生异常时,捕捉异常抛出节点,并获取与所述异 常抛出节点相对应的异常信息;
[0022] 第一异常信息记录模块,用于将所述异常信息单独记录到数据库。
[0023] 其中,所述第一异常信息记录模块,包括:
[0024] 业务逻辑处理单元,用于将所述异常信息存入消息队列;
[0025] 监听单元,用于将消息队列中的异常信息存入数据库。
[00%]其中,本方案还包括:
[0027] 检测模块,用于检测所述消息队列中已存入的异常信息数量是否大于预定阔值;
[0028] 若否,则触发所述监听单元;
[0029] 若是,则触发异常信息存入模块将所述异常信息存入日志文件中;
[0030] 其中,当所述检测模块检测到所述消息队列中已存入的异常信息数量小于所述预 定阔值时,则触发所述监听单元将所述日志文件中的异常信息存入所述消息队列。
[0031] 其中,本方案还包括:
[0032] 定时检测模块,用于在预定时间内检测所述日志文件中是否有待处理的异常消 息;若有,则触发第二异常消息记录模块将所述待处理的异常消息直接记录到所述数据库 中。
[0033] 其中,本方案还包括:
[0034] 接收模块,用于接收异常信息获取指令;
[0035] 查询模块,用于根据所述异常信息获取指令中携带的查询条件,从所述数据库中 获取相对应的异常信息,并通过终端进行显示。
[0036] 通过W上方案可知,本发明实施例提供的一种异常信息记录方法及系统,包括:当 程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应的异常信息;将所 述异常信息单独记录到数据库。可见,在本实施例中,通过将异常信息单独记录到数据库, 即将异常信息区和打印信息区分开,不仅增加了查询历史异常信息时的方便性,而且对查 询业务逻辑流程会更清晰,并且通过数据库的特性,可W组合不同的查询条件对异常信息 进行排查,增加了用户查询时的便利性,增加用户体验。
【附图说明】
[0037] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W 根据运些附图获得其他的附图。
[0038] 图1为本发明实施例公开的一种异常信息记录方法流程示意图;
[0039] 图2为本发明实施例公开的另一种异常信息记录方法流程示意图;
[0040] 图3为本发明实施例公开的一种异常信息记录系统结构示意图。
【具体实施方式】
[0041] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0042] 本发明实施例公开了一种异常信息记录方法及系统,W实现更方便的查询异常信 息。
[0043] 参见图1,本发明实施例提供的一种异常信息记录方法,包括:
[0044] S101、当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应 的异常信息;
[0045] 具体的,在本实施例中可W通过Spring框架的AOP模式捕获异常抛出点。
[0046] S102、将所述异常信息单独记录到数据库。
[0047] 其中,将所述异常信息记录到数据库之后,还包括:
[004引接收异常信息获取指令;
[0049] 根据所述异常信息获取指令中携带的查询条件,从所述数据库中获取相对应的异 常信息,并通过终端进行显示。
[0050] 具体的,本实施例中的数据库可W为Mongo数据库,并且通过Mongo数据库相关的 查询条件,查询所需异常信息,并通过前端图表化展示。
[0051] 优选的,将所述异常信息记录到数据库包括:
[0052] 将所述异常信息存入消息队列,并通过监听单元将消息队列中的异常信息存入数 据库。
[0053] 具体的,由于L0G4J日志一般采用同步方式输出日志信息,当日志文件存储遇到性 能瓶颈时,会影响到正常业务逻辑,严重甚至导致业务中断。因此,在本实施例中通过MQ方 式,将异常信息推送到消息队列中,并通过监听单元实时从消息队列中获取异常消息并记 录到Mongo数据库中,从而实现异步记录异常消息,运种采用MQ异步方式,可W在对原有业 务逻辑不产生影响的情况下,提升系统性能。其中,MQ全称为Message Queue,消息队列(MQ) 是一种应用程序之间的通信方法,通过读写出入队列的消息来通信,而无需专用连接来链 接它们。
[0054] 本发明实施例提供的一种异常信息记录方法,包括:当程序产生异常时,捕捉异常 抛出节点,并获取与所述异常抛出节点相对应的异常信息;将所述异常信息单独记录到数 据库。可见,在本实施例中,通过将异常信息单独记录到数据库,即将异常信息区和打印信 息区分开,不仅增加了查询历史异常信息时的方便性,而且对查询业务逻辑流程会更清晰, 并且通过数据库的特性,可W组合不同的查询条件对异常信息进行排查,增加了用户查询 时的便利性,增加用户体验。
[0055] 本发明实施例公开了一种具体的异常信息记录方法,相对于上一实施例,本实施 例对技术方案作了进一步的说明和优化。具体的参见图2:
[0056] S201、当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应 的异常信息;
[0057] S202、检测所述消息队列中已存入的异常信息数量是否大于预定阔值;
[0058] 若否,则执行S203、将所述异常信息存入所述消息队列;
[0059] 若是,则执行S204、将所述异常信息存入日志文件中,若检测到所述消息队列中已 存入的异常信息数量小于所述预定阔值,将所述日志文件中的异常信息存入所述消息队 列;
[0060] S205、通过监听单元将消息队列中的异常信息存入数据库。
[0061] 具体的,当检测到消息队列的状态为繁忙时,可W将异常信息先存入日志文件中, 待检测到消息队列的状态为空闲时,可W通过守护线程将日志文件中的异常信息存入至消 息队列中。
[0062] 具体的,守护线程(Daemon T虹ead)是一个后台运行的线程,与之对比的是用户线 程。它从属于创建它的线程,因此当创建守护的线程结束时,守护线程也随之消亡。当正在 运行的线程都是守护线程时Java虚拟机退出。
[0063] 本实施例中的守护线程用于监控消息队列。当消息队列中阻塞消息过多时,可将 消息先记录到日志文件中;当消息队列中的等待消息减少,可通过守护线程将日志文件中 的异常信息重新推送到消息队列。
[0064] 具体的,守护线程生成方法如下:
[00 化]
[0066] 运里需要注意几点:
[0067] 1) thread. SetDaemon(true)必须在thread. Sta;rt O 之前设置,否则会出现一个 Illeg 曰 IThre 曰 dSt 曰 teException 异常;
[0068] 2)不能把正在运行的常规线程设置为守护线程;
[0069] 3)在化emon线程中产生的新线程也是化emon的,不要认为所有的应用都可W分配 给化emon来进行服务,比如读写操作或者计算逻辑。
[0070] 其中,若在预定时间内检测到所述日志文件中有待处理的异常消息,则将所述待 处理的异常消息直接记录到所述数据库中。
[0071 ]具体的,将日志中存储的异常消息重新推送到消息队列是一条一条进行的,因此 在本实施例中添加定时任务,即在夜间业务不繁忙时刻,可将日志文件中待处理的消息进 行批量处理直接记录到Mongo数据库。具体的,本实施例中的定时任务采用Quartz (是 OpenSymphony开源组织在Job scheduling领域一个开源项目)实现。
[0072] 下面对本发明实施例提供的异常信息记录系统进行介绍,下文描述的异常信息记 录系统与上文描述的异常信息记录系统可W相互参照。
[0073] 参见图3,本发明实施例提供的一种异常信息记录系统,包括:
[0074] 异常信息获取模块100,用于当程序产生异常时,捕捉异常抛出节点,并获取与所 述异常抛出节点相对应的异常信息;
[0075] 第一异常信息记录模块200,用于将所述异常信息单独记录到数据库。
[0076] 本发明实施例提供的一种异常信息记录系统,包括:异常信息获取模块100,用于 当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应的异常信息;第 一异常信息记录模块200,用于将所述异常信息单独记录到数据库。可见,在本实施例中,通 过将异常信息单独记录到数据库,即将异常信息区和打印信息区分开,不仅增加了查询历 史异常信息时的方便性,而且对查询业务逻辑流程会更清晰,并且通过数据库的特性,可W 组合不同的查询条件对异常信息进行排查,增加了用户查询时的便利性,增加用户体验。
[0077] 基于上述技术方案,所述第一异常信息记录模块,包括:
[0078] 业务逻辑处理单元,用于将所述异常信息存入消息队列;
[0079] 监听单元,用于将消息队列中的异常信息存入数据库。
[0080] 基于上述技术方案,本方案还包括:
[0081] 检测模块,用于检测所述消息队列中已存入的异常信息数量是否大于预定阔值;
[0082] 若否,则触发所述监听单元;
[0083] 若是,则触发异常信息存入模块将所述异常信息存入日志文件中;
[0084] 其中,当所述检测模块检测到所述消息队列中已存入的异常信息数量小于所述预 定阔值时,则触发所述监听单元将所述日志文件中的异常信息存入所述消息队列。
[0085] 基于上述技术方案,本方案还包括:
[0086] 定时检测模块,用于在预定时间内检测所述日志文件中是否有待处理的异常消 息;若有,则触发第二异常消息记录模块将所述待处理的异常消息直接记录到所述数据库 中。
[0087] 基于上述技术方案,本方案还包括:
[0088] 接收模块,用于接收异常信息获取指令;
[0089] 查询模块,用于根据所述异常信息获取指令中携带的查询条件,从所述数据库中 获取相对应的异常信息,并通过终端进行显示。
[0090] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他 实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0091] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对运些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可W在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明 将不会被限制于本文所示的运些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
【主权项】
1. 一种异常信息记录方法,其特征在于,包括: 当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛出节点相对应的异常信 息; 将所述异常信息单独记录到数据库。2. 根据权利要求1所述的异常信息记录方法,其特征在于,将所述异常信息记录到数据 库包括: 将所述异常信息存入消息队列,并通过监听单元将消息队列中的异常信息存入数据 库。3. 根据权利要求2所述的异常信息记录方法,其特征在于,将异常信息存入消息队列之 前,还包括: 检测所述消息队列中已存入的异常信息数量是否大于预定阈值; 若否,则将所述异常信息存入所述消息队列; 若是,则将所述异常信息存入日志文件中,并在检测到所述消息队列中已存入的异常 信息数量小于所述预定阈值时,将所述日志文件中的异常信息存入所述消息队列。4. 根据权利要求3所述的异常信息记录方法,其特征在于,还包括: 若在预定时间内检测到所述日志文件中有待处理的异常消息,则将所述待处理的异常 消息直接记录到所述数据库中。5. 根据权利要求1-4中任意一项所述的异常信息记录方法,其特征在于,还包括: 接收异常信息获取指令; 根据所述异常信息获取指令中携带的查询条件,从所述数据库中获取相对应的异常信 息,并通过终端进行显示。6. -种异常信息记录系统,其特征在于,包括: 异常信息获取模块,用于当程序产生异常时,捕捉异常抛出节点,并获取与所述异常抛 出节点相对应的异常信息; 第一异常信息记录模块,用于将所述异常信息单独记录到数据库。7. 根据权利要求6所述的异常信息记录系统,其特征在于,所述第一异常信息记录模 块,包括: 业务逻辑处理单元,用于将所述异常信息存入消息队列; 监听单元,用于将消息队列中的异常信息存入数据库。8. 根据权利要求7所述的异常信息记录系统,其特征在于,还包括: 检测模块,用于检测所述消息队列中已存入的异常信息数量是否大于预定阈值; 若否,则触发所述监听单元; 若是,则触发异常信息存入模块将所述异常信息存入日志文件中; 其中,当所述检测模块检测到所述消息队列中已存入的异常信息数量小于所述预定阈 值时,则触发所述监听单元将所述日志文件中的异常信息存入所述消息队列。9. 根据权利要求8所述的异常信息记录系统,其特征在于,还包括: 定时检测模块,用于在预定时间内检测所述日志文件中是否有待处理的异常消息;若 有,则触发第二异常消息记录模块将所述待处理的异常消息直接记录到所述数据库中。10. 根据权利要求6-9中任意一项所述的异常信息记录系统,其特征在于,还包括:
【文档编号】G06F11/34GK106021358SQ201610305273
【公开日】2016年10月12日
【申请日】2016年5月10日
【发明人】解屹峰
【申请人】深圳云之家网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1