Parse Rails Production log для получения количества просмотров страницы - PullRequest
0 голосов
/ 26 января 2011

Каков наилучший способ анализировать производственный журнал раз в ночь, подсчитывать, сколько просмотров получено на каждой странице, а затем увеличивать счетчик посещений для каждой страницы в базе данных?

Вот пример записи:

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

В настоящее время мое приложение размещено на heroku.

1 Ответ

1 голос
/ 27 января 2011

Во-первых, я бы изменил регистратор для создания разных файлов журналов каждый день.Таким образом, вы можете анализировать весь файл журнала, не беспокоясь о том, чтобы дважды нажать на одну и ту же строку.Вы можете сделать это, добавив это в ваш production.rb файл:

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

Затем вы можете просто написать небольшой Ruby-файл, который запускается на задании cron вскоре после полуночи.Вот идея:

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 или что-то в этом роде.

...