首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl文件::尾同步

perl文件::尾同步
EN

Stack Overflow用户
提问于 2011-05-18 14:55:58
回答 2查看 701关注 0票数 1

我有这种情况:我用perl守护进程解析一些日志文件。这个守护进程将数据写入mysql db。

日志文件可以:

  1. 被旋转(‘通过文件大小和一些逻辑来解决’)
  2. 不存在(尾巴中的ignore_nonexistant参数)

守护进程:

  1. 可以被杀死,
  2. 可以通过某种方式死亡。--

我正在使用文件::尾到尾的文件。对于文件旋转机制的创建日期或文件大小可以帮助。我应该用什么机制从文件中的某个位置启动尾部呢?(asume表示有很多这样的守护进程,没有对文件系统的写访问)。

我考虑过DB中的位置变量,但这对我没有帮助。

可能是将位置参数传递给parrent过程的机制吗?

我只是不想重新发明自行车。

EN

回答 2

Stack Overflow用户

发布于 2011-05-18 15:30:18

文件:尾巴已经检测到旋转,并继续读取新的文件。

要处理即将死亡和重新启动的守护进程,您能否查询数据库中守护进程重新启动时编写的最后一条记录,并跳过日志文件行直到您到达稍后的行?

票数 2
EN

Stack Overflow用户

发布于 2011-05-19 22:20:58

试试http://search.cpan.org/dist/Log-Unrotate/。如果希望将位置文件存储在DB中而不是本地文件系统中,则必须实现自己的Log::Unrotate::Cursor类,但这应该很简单。

我们在生产中编写和使用了5年的Log::Unrotate,它非常努力地尝试不跳过任何数据。(如果您的游标变得无效,它就会抛出异常,例如,如果日志被旋转了几次,而阅读器由于某种原因没有工作,则会抛出异常。您可能希望启用autofix_cursor选项来更改此行为)。

还请看一下http://search.cpan.org/dist/File-LogReader/。我从来没有用过它,但它应该解决同样的任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6046804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档