每晚解析一次生产日志的最佳方法是,计算每个页面获得的点击次数,然后为数据库中的每个页面增加一个点击计数器?
以下是一个示例条目:
GET myapp.com/project/11 dyno=web.3 queue=0 wait=0ms service=168ms bytes=26378
我的应用程序目前托管在heroku上。
答案 0 :(得分: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
但是,我认为使用Google Analytics或其他内容会更容易。