我有一個虛擬主機託管多個虛擬主機。每個主機都有自己的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時間戳並在它們之間提取數據。簡單。但我寧願直接解析日誌文件。