Browse the Ruby on Rails Community.

You are here: Browse Railsplugins Exception Logger

Exception Logger

The Exception Logger (forgive the horrible name) logs your Rails exceptions in the database and provides a funky web interface to manage them.

First you need to generate the migration:

./script/generate exception_migration

Next, you’ll need to include the ExceptionLoggable module into ApplicationController. Once that’s done you might want to modify key methods to customize the logging:

render_404(exception) - Shows the 404 template.
render_500(exception) - Shows the 500 template.
log_exception(exception) - Logs the actual exception in the database.
rescue_action_in_public(exception) - Does not log these exceptions: ActiveRecord::RecordNotFound, ActionController::UnknownController, ActionController::UnknownAction

After that, visit /logged_exceptions in your application to manage the exceptions.

It’s understandable that you may want to require authentication. Add this to your config/environments/production.rb:

  1. config/environments/production.rb config.after_initialize do require ‘application’ unless Object.const_defined?(:ApplicationController) LoggedExceptionsController.class_eval do # set the same session key as the app session :session_key => ‘_beast_session_id’
    1. include any custom auth modules you need include AuthenticationSystem end
    before_filter :login_required
    1. optional, sets the application name for the rss feeds self.application_name = “Beast”
    protected
      # only allow admins
      # this obviously depends on how your auth system works
      def authorized?
        current_user.is_a?(Admin)
      end
    1. assume app’s login required doesn’t use http basic def login_required_with_basic respond_to do |accepts| # alias_method_chain will alias the app’s login_required to login_required_without_basic accepts.html { login_required_without_basic }
      1. access_denied_with_basic_auth is defined in LoggedExceptionsController # get_auth_data returns back the user/password pair accepts.rss do access_denied_with_basic_auth unless self.current_user = User.authenticate(*get_auth_data) end end
      end
    alias_method_chain :login_required, :basic
    end

The exact code of course depends on the specific needs of your application.

CREDITS

Jamis Buck – original exception_notification plugin Rick Olson – model/controller code Josh Goebel – design

NOTE: This description has been extracted from the Plugin README and so the formatting may need updating to make browser friendly

Users


See all 36 member details


Membership

+ Join this railsplugin

Record Maintainer

'None'