我有这种情况:我用perl守护进程解析一些日志文件。这个守护进程将数据写入mysql db。
日志文件可以:
守护进程:
我正在使用文件::尾到尾的文件。对于文件旋转机制的创建日期或文件大小可以帮助。我应该用什么机制从文件中的某个位置启动尾部呢?(asume表示有很多这样的守护进程,没有对文件系统的写访问)。
我考虑过DB中的位置变量,但这对我没有帮助。
可能是将位置参数传递给parrent过程的机制吗?
我只是不想重新发明自行车。
发布于 2011-05-18 15:30:18
文件:尾巴已经检测到旋转,并继续读取新的文件。
要处理即将死亡和重新启动的守护进程,您能否查询数据库中守护进程重新启动时编写的最后一条记录,并跳过日志文件行直到您到达稍后的行?
发布于 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/。我从来没有用过它,但它应该解决同样的任务。
https://stackoverflow.com/questions/6046804
复制相似问题