2011-01-26 43 views
0

解析生產日誌每晚一次的最佳方式是什麼?計算每頁獲得的點擊次數,然後爲數據庫中的每個頁面增加一個計數器?解析Rails生產日誌以獲取頁面查看次數

下面是一個例子條目:

GET myapp.com/project/11 dyno=web.3 queue=0 wait=0ms service=168ms bytes=26378 

我的應用程序目前託管在Heroku上。

+1

隨着所有方便的花花公子軌道提供了包裝功能,我認爲你應該記錄它們在你的應用程序中發生的頁面瀏覽,而不是在事後處理日誌。 – re5et 2011-01-26 20:18:56

+0

我不需要它是實時的,所以我希望每天保持我的數據庫寫入一次。 – fchasen 2011-01-26 20:34:06

回答

1

首先,我會改變記錄器每天創建不同的日誌文件。通過這種方式,您可以解析整個日誌文件,而無需擔心兩次觸及同一行。你可以通過添加這對您的production.rb文件:

config.logger = Logger.new(config.paths.log.first, 'daily') 

然後,你可以只寫午夜後不久,在一個cron作業運行一個小的Ruby文件。這是一個想法:

hits = Hash.new(0) 
yesterday = Time.now - (24 * 60 * 60) 
yesterday_formatted = yesterday.strftime("%Y%m%d") # 20110126 
File.open("production.log.#{yesterday_formatted}", "r") do |infile| 
    while (line = infile.gets) 
    match = /(GET|POST) (\S+)/.match(line) 
    hits[match[2]] += 1 if match 
    end 
end 

hits.each do |page, count| 
    # Record number of hits for this page in the database 
end 

但是,我認爲這會更容易使用谷歌分析或什麼的。