public
Clone URL: git://github.com/defunkt/exception_logger.git
technoweenie (author)
Sun Jul 02 06:55:40 -0700 2006
commit  89fee3e9213d3fc6e100e7e9ef435d9dc6ed7d6d
tree    0346f7a5d68945e3266000eedd079611604ceaba
parent  d2b108761e91740a0cbe2b70fa50aa94c1dadc6e
exception_logger / README
100644 44 lines (30 sloc) 1.599 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ExceptionLogger
===============
 
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:
 
  # config/environments/production.rb
  config.after_initialize do
    require 'application' unless Object.const_defined?(:ApplicationController)
    LoggedExceptionsController.class_eval do
      before_filter :login_required
      protected
        # only allow admins
        # this obviously depends on how your auth system works
        def authorized?
          current_user.is_a?(Admin)
        end
    end
  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