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