一种基于管道的日志回滚实现方法技术

技术编号:10151893 阅读:117 留言:0更新日期:2014-06-30 18:55
本发明专利技术公开了一种基于管道的日志回滚实现方法,其包括如下步骤:(1)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道;(2)日志写入程序打开最终要写入的日志文件;(3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志;(4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。该方法能够解决现有两种日志回滚方法所存在的不足,可以精确地控制回滚的策略,同时也易于在不同程序中集成。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,其包括如下步骤:(1)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道;(2)日志写入程序打开最终要写入的日志文件;(3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志;(4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。该方法能够解决现有两种日志回滚方法所存在的不足,可以精确地控制回滚的策略,同时也易于在不同程序中集成。【专利说明】—种基于管道的日志回滚实现方法
本专利技术涉及一种日志文件回滚的实现方法,特别涉及。
技术介绍
记录日志是众多计算机程序的基本功能之一,对于服务器程序来说尤为重要。在磁盘容量有限的系统上,日志文件的回滚是必须的,否则在长期运行的情况下,日志文件就有可能撑满整个磁盘分区,影响程序的正常运行,因此需要定期或指定条件对日志文件进行回滚——也即固定日志文件的数量和单个文件的大小。常见的日志回滚方法有两类:程序内实现和程序外实现。程序内实现:是指在程序内部处理日志写入时,检查当前的日志文件是否已超过设定的最大容量,如果超过,则关闭现有文件,并打开新的文件写入,最后要检查所有的日志文件数量是否已达到上限,如果达到则删除最旧的文件。很多著名的日志处理库如log4j, log4cpp等都是基于这种方法的。程序外实现:是指在程序外部,通过定期检查磁盘或目录等手段,在发现日志文件超出容量时,将现有日志文件复制到备份文件,再将当前文件截断为0,最后再检查所有的日志文件数量是否已达到上限,如果达到则删除最旧的文件。这种方法的代表是UNIX下的1grotate系列工具。 以上两种方法在实际应用中都有一定的不足:程序内实现的缺陷是:比较难以处理多个进程,线程使用同一个日志文件的情况,因为需要同时通知各个线程/进程使用新文件比较难以做到,尤其对于多进程的程序,文件句柄在多个进程之间的传递很难。程序外实现的缺陷是:因为需要外部程序定期检查文件大小,检查的频率和程序实际写入文件的速度可能不对应,很可能在两次检查之间,程序出现突发性的日志写入,就一下子突破了存储限制。在某些存储受限的场景中(比如程序运行在CF卡或Flash中),这种情况会导致比较严重的问题。
技术实现思路
本专利技术针对现有程序内实现和程序外实现日志回滚技术所存在的问题,而提供。该方法能够解决现有两种日志回滚方法所存在的不足,可以精确地控制回滚的策略,同时也易于在不同程序中集成。为了达到上述目的,本专利技术采用如下的技术方案:,所述实现方法包括如下步骤:(I)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道;(2)日志写入程序打开最终要写入的日志文件;(3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志;(4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。在本专利技术的优选实例中,所述日志写入程序为一个单进程/线程的程序。根据上述方案形成的本专利技术通过设计了命名管道和日志写入程序这样一个中间层,既简化了业务程序的实现,又保证了日志回滚的精确性。【专利附图】【附图说明】以下结合附图和【具体实施方式】来进一步说明本专利技术。图1为本专利技术实现的原理图。【具体实施方式】为了使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本专利技术。本专利技术提供的日志回滚实现方法通过设计命名管道和日志写入程序这样一个中间层,由此来简化了业务程序的实现,并又保证了日志回滚的精确性。其中,日志写入程序控制命名管道和日志文件,用于读取命名管道中数据和将相关日志写入日志文件中,并根据日志回滚策略检查文件的大小,决定是否进行回滚。命名管道用于实现多个业务程序的日志写入。据此,本专利技术提供的方案具体实施如下(参见图1):(I)启动一个独立的日志写入程序,假设名为logwriter。该1gwriter程序是一个单进程/线程的程序,因此其控制文件回滚时不需要在多进程/线程中进行协调,也不需要跨进程传递文件句柄。(2) logwriter程序启动时打开一个命名管道(FIFO),假设名为logpipe。(3) logwriter程序打开最终要写入的日志文件,如server, log(4)业务程序App (其包括三个子进程/线程1-3)不再直接打开server, log,而是打开logwriter程序控制的命名管道logpipe,并向其写入日志。(5)logwriter持续读取命名管道logpipe,将所有读取到的内容(即业务程序App向命名管道logpipe写入的日志)写入server, log ;并根据日志回滚策略检查文件的大小,决定是否进行回滚。通过上述实例可知,本专利技术提供的方案在实施时,对于业务程序App来说,无需处理所有和日志回滚相关的逻辑,简化了代码实现;再者logwriter程序可以精确地实现回滚策略,不会由于检测不及时导致日志文件超出容量限制。以上显示和描述了本专利技术的基本原理、主要特征和本专利技术的优点。本行业的技术人员应该了解,本专利技术不受上述实施例的限制,上述实施例和说明书中描述的只是说明本专利技术的原理,在不脱离本专利技术精神和范围的前提下,本专利技术还会有各种变化和改进,这些变化和改进都落入要求保护的本专利技术范围内。本专利技术要求保护范围由所附的权利要求书及其等效物界定。【权利要求】1.,其特征在于,所述实现方法包括如下步骤: (1)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道; (2)日志写入程序打开最终要写入的日志文件; (3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志; (4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。2.根据权利要求1所述的,其特征在于,所述日志写入程序为一个单进程/线程的程序。【文档编号】G06F11/34GK103885872SQ201210563561【公开日】2014年6月25日 申请日期:2012年12月21日 优先权日:2012年12月21日 【专利技术者】王彦杰, 掌晓愚, 韩洪慧, 谭武征 申请人:上海格尔软件股份有限公司本文档来自技高网
...

【技术保护点】
一种基于管道的日志回滚实现方法,其特征在于,所述实现方法包括如下步骤:(1)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道;(2)日志写入程序打开最终要写入的日志文件;(3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志;(4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。

【技术特征摘要】

【专利技术属性】
技术研发人员:王彦杰掌晓愚韩洪慧谭武征
申请(专利权)人:上海格尔软件股份有限公司
类型:发明
国别省市:上海;31

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

1