我有一个日志文件,它由一个实时运行的脚本记录,现在我将从日志中监控脚本的状态,所以我使用JavaScript更新WEB/HTML,还编写了一个CGI脚本来将日志和输出事件状态解析为JSON以供JavaScript读取。JS脚本定期(例如,每2秒)调用CGI来解析日志,并调用getJSON读取事件状态,然后更新WEB。
例如:在T(秒)时,日志文件记录如下:
事件1开始..。
做第一件事..。
事件1通过..。
活动1结束..。
在T+2(第二个)时,日志文件记录如下:
事件1开始..。
做第一件事..。
事件1通过..。
活动1结束..。
事件2开始..。
做第二件事..。
事件2失败..。
活动2结束..。
时间T(秒)处的CGI可以输出:
{“事件”:[“事件1",”传递“]}
在某个URI上,JS的getJSON将读取该URI
同时,T+2(第二)可以输出:
{“事件”:[“事件1”、“传递”、“事件2”、“失败”]}
因此,在这里,我实现的CGI脚本将每2秒解析整个日志,这可能在日志很大时消耗大量的系统资源,并对已经完成的事件进行重复操作。
任何人都知道如何通过输出而不是整个日志递增地解析日志,以及如何存储已经完成的事件的状态?
发布于 2013-01-18 16:29:33
如果不希望每次解析整个日志文件,则应尝试模仿尾部-f的行为
mtime号码和状态。当下一个电话到达时,将inode号与您保存的inode号进行比较:
mtime已更改,请使用setpos查找旧位置,然后继续解析。使用此解决方案,您将能够逐块解析文件。小心,当只写了一行的一部分时,有时可能会有一个边框。
编辑:@mob的评论
https://stackoverflow.com/questions/14402518
复制相似问题