我有一个虚拟主机托管多个虚拟主机。每个主机都有自己的access.log和error.log。目前,没有日志轮转设置,但这可能会改变。需要关于如何编码我的日志解析器的一些想法
基本上,我想解析这些日志来监视带宽并收集统计信息。
我的想法是写一个解析器并将信息保存到一个小的sqlite数据库。该脚本将每5分钟运行一次,并使用Python的seek
和tell
方法从最后解析的位置打开日志文件。这使我无法每隔5分钟解析一个10GB的日志文件,当我需要的是坐在它的最后的新信息时(没有记录旋转,请记住?)。
经过一番思考,我意识到,我做的是从日志文件中取信息,并把它们放入一个数据库......从一个位置移动到另一个数据:/
所以怎么回事我可以这样做吗? 我希望能够做一些事情,如:
python logparse.py --show=bandwidth --between-dates=25,05|30,05 --vhost=test.com
这将打开test.com的日志文件,并告诉我用于指定的5天的带宽。
现在,我的问题是,当我只想要5天的数据时,我该如何防止自己解析10GB的数据?
如果我想用我的想法将日志数据每5分钟保存到一个数据库中,我可以保存日期的unix时间戳并在它们之间提取数据。简单。但我宁愿直接解析日志文件。