0
解析生產日誌每晚一次的最佳方式是什麼?計算每頁獲得的點擊次數,然後爲數據庫中的每個頁面增加一個計數器?解析Rails生產日誌以獲取頁面查看次數
下面是一個例子條目:
GET myapp.com/project/11 dyno=web.3 queue=0 wait=0ms service=168ms bytes=26378
我的應用程序目前託管在Heroku上。
解析生產日誌每晚一次的最佳方式是什麼?計算每頁獲得的點擊次數,然後爲數據庫中的每個頁面增加一個計數器?解析Rails生產日誌以獲取頁面查看次數
下面是一個例子條目:
GET myapp.com/project/11 dyno=web.3 queue=0 wait=0ms service=168ms bytes=26378
我的應用程序目前託管在Heroku上。
首先,我會改變記錄器每天創建不同的日誌文件。通過這種方式,您可以解析整個日誌文件,而無需擔心兩次觸及同一行。你可以通過添加這對您的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
但是,我認爲這會更容易使用谷歌分析或什麼的。
隨着所有方便的花花公子軌道提供了包裝功能,我認爲你應該記錄它們在你的應用程序中發生的頁面瀏覽,而不是在事後處理日誌。 – re5et 2011-01-26 20:18:56
我不需要它是實時的,所以我希望每天保持我的數據庫寫入一次。 – fchasen 2011-01-26 20:34:06