[发明专利]一种基于管道的日志回滚实现方法在审
申请号: | 201210563561.3 | 申请日: | 2012-12-21 |
公开(公告)号: | CN103885872A | 公开(公告)日: | 2014-06-25 |
发明(设计)人: | 王彦杰;掌晓愚;韩洪慧;谭武征 | 申请(专利权)人: | 上海格尔软件股份有限公司 |
主分类号: | G06F11/34 | 分类号: | G06F11/34 |
代理公司: | 上海天翔知识产权代理有限公司 31224 | 代理人: | 刘粉宝 |
地址: | 200070 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 管道 日志 实现 方法 | ||
技术领域
本发明涉及一种日志文件回滚的实现方法,特别涉及一种基于管道的日志回滚实现方法。
背景技术
记录日志是众多计算机程序的基本功能之一,对于服务器程序来说尤为重要。在磁盘容量有限的系统上,日志文件的回滚是必须的,否则在长期运行的情况下,日志文件就有可能撑满整个磁盘分区,影响程序的正常运行,因此需要定期或指定条件对日志文件进行回滚——也即固定日志文件的数量和单个文件的大小。
常见的日志回滚方法有两类:程序内实现和程序外实现。
程序内实现:是指在程序内部处理日志写入时,检查当前的日志文件是否已超过设定的最大容量,如果超过,则关闭现有文件,并打开新的文件写入,最后要检查所有的日志文件数量是否已达到上限,如果达到则删除最旧的文件。很多著名的日志处理库如log4j,log4cpp等都是基于这种方法的。
程序外实现:是指在程序外部,通过定期检查磁盘或目录等手段,在发现日志文件超出容量时,将现有日志文件复制到备份文件,再将当前文件截断为0,最后再检查所有的日志文件数量是否已达到上限,如果达到则删除最旧的文件。这种方法的代表是UNIX下的logrotate系列工具。
以上两种方法在实际应用中都有一定的不足:
程序内实现的缺陷是:比较难以处理多个进程,线程使用同一个日志文件的情况,因为需要同时通知各个线程/进程使用新文件比较难以做到,尤其对于多进程的程序,文件句柄在多个进程之间的传递很难。
程序外实现的缺陷是:因为需要外部程序定期检查文件大小,检查的频率和程序实际写入文件的速度可能不对应,很可能在两次检查之间,程序出现突发性的日志写入,就一下子突破了存储限制。在某些存储受限的场景中(比如程序运行在CF卡或Flash中),这种情况会导致比较严重的问题。
发明内容
本发明针对现有程序内实现和程序外实现日志回滚技术所存在的问题,而提供一种基于管道的日志回滚实现方法。该方法能够解决现有两种日志回滚方法所存在的不足,可以精确地控制回滚的策略,同时也易于在不同程序中集成。
为了达到上述目的,本发明采用如下的技术方案:
一种基于管道的日志回滚实现方法,所述实现方法包括如下步骤:
(1)启动一个独立的日志写入程序,该日志写入程序启动时打开一个命名管道;
(2)日志写入程序打开最终要写入的日志文件;
(3)业务程序打开日志写入程序启动时打开的命名管道,并写入日志;
(4)日志写入程序持续读取命名管道,将所有读取到的内容写入日志文件;并根据日志回滚策略检查文件的大小,决定是否进行回滚。
在本发明的优选实例中,所述日志写入程序为一个单进程/线程的程序。
根据上述方案形成的本发明通过设计了命名管道和日志写入程序这样一个中间层,既简化了业务程序的实现,又保证了日志回滚的精确性。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明实现的原理图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
本发明提供的日志回滚实现方法通过设计命名管道和日志写入程序这样一个中间层,由此来简化了业务程序的实现,并又保证了日志回滚的精确性。
其中,日志写入程序控制命名管道和日志文件,用于读取命名管道中数据和将相关日志写入日志文件中,并根据日志回滚策略检查文件的大小,决定是否进行回滚。
命名管道用于实现多个业务程序的日志写入。
据此,本发明提供的方案具体实施如下(参见图1):
(1)启动一个独立的日志写入程序,假设名为logwriter。该logwriter程序是一个单进程/线程的程序,因此其控制文件回滚时不需要在多进程/线程中进行协调,也不需要跨进程传递文件句柄。
(2)logwriter程序启动时打开一个命名管道(FIFO),假设名为logpipe。
(3)logwriter程序打开最终要写入的日志文件,如server.log
(4)业务程序App(其包括三个子进程/线程1-3)不再直接打开server.log,而是打开logwriter程序控制的命名管道logpipe,并向其写入日志。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海格尔软件股份有限公司,未经上海格尔软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210563561.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种水平导向轮装置
- 下一篇:信息对象的用户增强排序