[英]perl File::Tail syncronization
我有这种情况:我用perl守护进程解析一些日志文件。 该守护进程将数据写入mysql db。
日志文件可以:
守护程序:
我使用File :: Tail来尾随文件。 对于创建日期或文件大小的文件轮换机制可以提供帮助。 我应该使用什么机制从文件中的某个位置开始尾部? (假设有很多这样的守护进程,没有对文件系统的写访问权限)。
我在DB中考虑位置变量,但这对我没有帮助。
也许某种机制将位置参数传递给parrent进程?
我只是不想重新发明自行车。
File :: Tail已经检测到旋转并继续从新文件中读取。
要处理守护程序死亡和重新启动,您是否可以在数据库中查询守护程序重新启动时写入的最后一条记录,并且只是跳过日志文件行,直到您到达更晚的行?
试试http://search.cpan.org/dist/Log-Unrotate/ 。 如果您希望将位置文件存储在DB而不是本地文件系统中,则必须实现自己的Log::Unrotate::Cursor
类,但这应该是微不足道的。
我们在生产中编写并使用了Log::Unrotate
5年,并且它很难从不跳过任何数据。 (如果你的光标变得无效,它会如此努力地抛出异常,例如,当读取器由于某种原因而无法工作时,日志被多次旋转。你可能想要启用autofix_cursor
选项来改变这种行为)。
另请查看http://search.cpan.org/dist/File-LogReader/ 。 我从来没有使用它,但它应该解决同样的任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.