Exception Logger for Rails 4
This gem is evolved from the outdated rails_exception_logger gem. I refined it with the mountable rails engine, making it convenient to mount to any existing rails app.
Install
Inside your Gemfile:
# Rails 4.1.x
gem "rails_exception_logger", :github => "pvijayror/rails_exception_logger"
and then run:
bundle install
Gem Dependencies
Please check if all those requirements are satisfied on your environment.
-
will_paginate >= 3.0.5 # (used for pagination)
-
rails >= 4.0.0
Inside your ApplicationController:
include RailsExceptionLogger::ExceptionLoggable # loades the module
rescue_from Exception, :with => :log_exception_handler # tells rails to forward the 'Exception' (you can change the type) to the handler of the module
Inside your config/routes.rb
mount RailsExceptionLogger::Engine => "/rails_exception_logger"
Database Setup
Use
rake rails_exception_logger:install:migrations
This will create a database migration
TIMESTAMP_create_rails_exception_logger_logged_exceptions.rails_exception_logger.rb
inside db/migrations
Then
rake db:migrate
Authentication
If you want, and believe me you want that, you can add the following lines to your environment to enable Authentication
Example uses the declarative_authorization gem
in config/environment/production.rb:
config.after_initialize do
RailsExceptionLogger::LoggedExceptionsController.class_eval do
# include any custom auth modules you need
# (declarative authorization gem used)
filter_resource_access
# just add any code you want to be included in the controller ;)
# optional, sets the application name for the rss feeds
self.application_name = "Your Application Name"
end
end
and (if you use declarative_authorization) add this to your authorization_rules.rb file:
role :admin do
has_permission_on :logged_exceptions, :to => :manage
...
Testing & Development
Not implemented yet.
Usage
To localize the interface:
en:
rails_exception_logger:
logged_exceptions:
index:
title: Logged Exceptions
filters: Filters
latest_exceptions: Latest Exceptions
exception: Exception
controller_action: Controller / Action
dates: Dates
today: Today
last_few_days: Last few days
last_7_days: Last 7 days
last_30_days: Last 30 days
show:
title: Logged Exception
To log extra data, in your ApplicationController:
self.exception_data = Proc.new { |controller| "Extra exception infomation here!" }
or
self.exception_data = :extra_exception_data
def extra_exception_data
"Extra exception infomation here!"
end
To add authentication, in config/application.rb or the specific environment file:
# set up authencation of rails_exception_logger
config.after_initialize do
RailsExceptionLogger::LoggedExceptionsController.class_eval do
before_filter :authorize
protected
def
redirect_to main_app.admin_login_path unless admin_loggined?
end
def admin_loggined?
session[:admin_user_id].present?
end
end
end
License
MIT License. See LICENSE for details.