ExceptionLoggerプラグインを使ってみた

ExceptionLoggerという、運用中に発生した例外をDBに保存しておき、後でAjax画面で管理できるプラグインを使ってみました。

http://blog.masuidrive.jp/articles/2006/09/25/rails-rss-feeds-for-exception-logger
を参考にインストールします。

ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/exception_logger

してから、

ruby script/generate exception_migration
ruby db:migrate

でテーブルを作成。

僕の環境はRails1.6.1のRuby1.8.4なんですが、このままじゃエラーになって動きませんでした。
エラーをキャッチする部分でエラーが発生するもんで捕捉がめんどうでしたが、どうも
plugin/exception_logger/lib/exception_loggable.rb

render_optional_error_file status

が悪さをしているようで、こいつをコメントアウトしたら動きました。
そして/logged_exceptionsにアクセスすると管理画面にいけるわけですが、どうもこの管理画面は
productionモードでないとまともに動かないようです。developmentモードだと、挙動が不安定になって
意味不明でした。

なにはともあれ、自分の見てないところで発生する例外を全部チェックできるのはうれしいですなぁ。


 -------2月18日追記-----------------------
デフォルトのまんまだと、アドレス打ち込むだけで誰でも管理画面に行けてしまいます。
READMEを見ると認証を使った方法が書かれていますが、login_engineを使っているならもっと
簡単にできると思います。
exception_logger/lib/logged_exceptions_controller.rb
で定義されてる全てのアクションに対し、認証フィルタをかけてやります。

class LoggedExceptionsController < ActionController::Base
  cattr_accessor :application_name
  layout nil

  before_filter :nin

  def nin
    #ユーザー認証
    user = session[:user]
    if !user
        redirect_to '/404.html'
        return false
    end
    unless user.login=="root"
        redirect_to '/404.html'
        return false
    end  
  end