一种日志输出方法和装置制造方法及图纸

技术编号:13351840 阅读:239 留言:0更新日期:2016-07-15 13:42
本申请提供一种日志输出方法和装置。所述方法包括:根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域;监测所述任务单元所属的事务是否提交;如果所述任务单元所属的事务提交,则将所述缓存区域中的所述任务单元的日志输出到磁盘。通过本申请的技术方案,可以确保任务单元的日志与事务的执行结果一致,同时,内存占有率较小、程序可读性高且非常灵活。

【技术实现步骤摘要】
一种日志输出方法和装置
本申请涉及数据处理
,尤其涉及一种日志输出方法和装置。
技术介绍
数据库事务是指作为单个逻辑工作单元执行一系列操作,要么完整地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会更新数据库的任何数据。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序的运行更加稳定可靠。一个数据库事务通常会包括有多个任务单元,在执行事务时,需要输出每个任务单元的执行参数和结果等日志,以便于后续数据的备份和恢复。在日志输出的过程中,需要保证每个任务单元的日志与事务的执行结果一致。如果当前事务提交,则需要输出该事务包含的所有任务单元的日志。如果当前事务回滚,则需要确保该事务包含的所有任务单元的日志都回滚。目前,为确保每个任务单元的日志与事务的执行结果一致,可以将每个任务单元的执行参数和结果回传,在事务提交时统一输出。然而,这种实现方式会导致回传参数过多,降低了程序的可读性。在其他的实现方式中,还可以将每个任务单元的执行参数和结果放入线程变量中,在事务提交后,统一从线程变量中获取每个任务单元的执行参数和结果并进行输出。然而,在线程变量中保存大量的执行参数和结果,会占用大量的内存。同时,这两种实现方式都只能在事务提交后进行日志的输出,不够灵活。
技术实现思路
有鉴于此,本申请提供一种日志输出方法和装置。具体地,本申请是通过如下技术方案实现的:一种日志输出方法,所述方法包括:根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域;监测所述任务单元所属的事务是否提交;如果所述任务单元所属的事务提交,则将所述缓存区域中的所述任务单元的日志输出到磁盘。进一步地,所述方法包括:如果所述任务单元所属的事务回滚,则删除所述缓存区域中的所述任务单元的日志。进一步地,所述方法包括:在将所述缓存区域中的所述任务单元的日志输出到磁盘之后,删除所述缓存区域中的所述任务单元的日志。进一步地,在根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域之前,所述方法还包括:判断所述任务单元是否在本地事务内执行;如果所述任务单元在本地事务内执行,则根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域。一种日志输出装置,所述装置包括:第一输出单元,根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域;结果监测单元,监测所述任务单元所属的事务是否提交;第二输出单元,在所述任务单元所属的事务提交时,将所述缓存区域中的所述任务单元的日志输出到磁盘。进一步地,所述装置还包括:第一删除单元,在所述任务单元所属的事务回滚时,删除所述缓存区域中的所述任务单元的日志。进一步地,所述装置还包括:第二删除单元,在将所述缓存区域中的所述任务单元的日志输出到磁盘之后,删除所述缓存区域中的所述任务单元的日志。进一步地,所述装置还包括:事务判断单元,判断所述任务单元是否在本地事务内执行;所述第一输出单元,在所述任务单元在本地事务内执行时,根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域。由以上描述可以看出,本申请通过将任务单元的日志输出到预设的缓存区域,并在所述任务单元所属的事务提交时,将所述缓存区域中所述任务单元的日志输出到磁盘,进而确保任务单元的日志与事务的执行结果一致。同时,内存占有率较小、程序可读性高且非常灵活。附图说明图1是本申请一示例性实施例示出的一种日志输出方法的流程示意图。图2是本申请一示例性实施例示出的一种服务端的结构示意图。图3是本申请一示例性实施例示出的一种日志输出装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。针对上述问题,本申请提供一种日志输出方案,可以确保每个任务单元的日志与事务的执行结果一致。请参考图1,本申请提供一种日志输出方法,所述方法可以应用在服务端上,包括以下步骤:步骤101,根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域。一个事务通常包括有多个任务单元,在本实施例中,针对一个事务,分别将其包括的所述多个任务单元的日志输出到预设的缓存区域。具体地,所述任务单元的日志至少包括有:任务单元的执行参数和结果。举例来说,以某个事务为用户取款500元为例,该事务至少包括有以下三个任务单元。其中,任务单元A对用户进行身份验证,任务单元B查询用户账户的余额,任务单元C执行对用户账户500元的扣款操作。可以理解的是,要完成这样一个事务的提交,任务单元A、任务单元B与任务单元C必须都要成功完成,即任务单元A验证用户身份合法,任务单元B查询用户账户的余额大于等于500元,任务单元C在用户账户中成功扣款500元。如果任务单元A、任务单元B和任务单元C中至少一个任务单元没有成功完成,则该事务执行失败,即事务回滚,比如:任务单元B查询用户账户的余额小于500元等情况。以任务单元B为例,根据查询用户账户的余额这个任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域。具体地,该任务单元B的执行参数至少包括有:用户账户信息、查询时间以及操作员等,该任务单元B的执行结果为用户账户的余额。在本步骤中,将任务单元B的日志B,即上述执行参数和执行结果输出到预设的缓存区域。同样,根据任务单元A以及任务单元C的执行参数和结果,将任务单元A以及任务单元C的日志A以及日志C输出到所述预设的缓存区域。步骤102,监测所述任务单元所属的事务是否提交。如果所述任务单元所属的事务提交,则执行步骤103。如果所述任务单元所属的事务回滚,则执行步骤104。在本实施例中,针对每个任务单元,监测所述任务单元所属的事务的执行结果,比如:可以通过注册当前事务的事务同步器实现类以监测所述事务的执行结果。其中,所述事务的执行结果包括有提交和回滚。如果所述任务单元所属的事务提交,则执行步骤103。如果所述任务的那样所属的事务回滚,则执行步骤104。步骤103,将所述缓存区域中的所述任务单元的日志输出到磁盘。基于前述步骤102,如果所述任务单元所属的事务提交,意味着各个任务单元的日志与事务一致,将所述缓存区域中的本文档来自技高网...

【技术保护点】
一种日志输出方法,其特征在于,所述方法包括:根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域;监测所述任务单元所属的事务是否提交;如果所述任务单元所属的事务提交,则将所述缓存区域中的所述任务单元的日志输出到磁盘。

【技术特征摘要】
1.一种日志输出方法,其特征在于,所述方法包括:根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域;监测所述任务单元所属的事务是否提交;如果所述任务单元所属的事务提交,则将所述缓存区域中的所述任务单元的日志输出到磁盘;如果所述任务单元所属的事务回滚,则删除所述缓存区域中的所述任务单元的日志。2.根据权利要求1所述的方法,其特征在于,所述方法包括:在将所述缓存区域中的所述任务单元的日志输出到磁盘之后,删除所述缓存区域中的所述任务单元的日志。3.根据权利要求1所述的方法,其特征在于,在根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域之前,所述方法还包括:判断所述任务单元是否在本地事务内执行;如果所述任务单元在本地事务内执行,则根据任务单元的执行参数和结果,将所述任务单元的日志输出到预设的缓存区域。4.一种日...

【专利技术属性】
技术研发人员:湛滨瑜
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1