解析Rails生产日志以获取查看页面的次数

时间:2011-01-26 20:10:26

标签: ruby-on-rails logging cron heroku

每晚解析一次生产日志的最佳方法是,计算每个页面获得的点击次数,然后为数据库中的每个页面增加一个点击计数器?

以下是一个示例条目:

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

我的应用程序目前托管在heroku上。

1 个答案:

答案 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或其他内容会更容易。