2008年05月30日

Railsのログからリクエスト時間ごとや閲覧回数ごとなどのランキングを生成してくれるツール

Rawk - Ruby on Rails Log Analyzer

 時間のかかっている処理をログから抽出したいと思い検索し見つけたツールです。

 ただのRubyのスクリプトで

 $> ruby [ダウンロードしたスクリプトファイルのパス] < [対象のログファイルのパス(production.log等)

で解析し、コンソールに結果を出力してくれます。

 ただ、現時点の最新(1.2)が私の環境(Rails 1.2.5)のログだとうまく動いてくれず(ZeroDivisionErrorが発生)、スクリプトを修正する必要がありました。

 修正は、スクリプトの181行目に対し以下のように行いました。


修正前) next unless $_.index("Completed in") == 0

修正後) next unless $_.index("Completed in")


 同じ現象が発生するなら試してみて下さい。


 また、通常はリクエストURLからコントローラーとアクションを推測して集計されます。そのためruotes.rbの設定によっては、うまく単位がまとまってくれない場合があります。

 その場合、ログに指定した形式でプロセスIDを出すようにすると、コントローラーのアクションごとに集計してくれるようになります。

 それは、config/environment.rbに以下の記述を追加すればできるようになります。(ちなみに、スクリプトのヘルプ(-?を与えて実行で出力される)で指定される記述だとうまくいきませんでした)

class Logger
alias format_message old_format_message

def format_message(severity, timestamp, progname, msg)
old_format_message(severity, timestamp, progname, "#{msg} (pid:#{$$})")
end
end

 ちょっと修正が必要でしたが、ほぼ手間なしで有用な分析情報が手に入れられます。サイトの改善などに悩んでいるRails開発者には便利なツールといっていいでしょう。
タグ:ruby on rails

人気blogランキング


posted by よっしぃ at 17:55 | Comment(0) | TrackBack(0) | Ruby On Rails
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。