This gem is evolved from the outdated exception_logger gem. I refined it with the mountable rails engine, making it convenient to mount to any existing rails app.
Inside your Gemfile:
# Rails 4.1.x gem "exception_logger", :github => "ryancheung/exception_logger" # Rails 4.0.x gem "exception_logger", :github => "ryancheung/exception_logger", tag: 'v0.1.0'
and then run:
bundle install
Please check if all those requirements are satisfied on your environment.
-
will_paginate >= 3.0.5 # (used for pagination)
-
rails >= 4.0.0
include ExceptionLogger::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
mount ExceptionLogger::Engine => "/exception_logger"
Use
rake exception_logger:install:migrations
This will create a database migration
TIMESTAMP_create_exception_logger_logged_exceptions.exception_logger.rb
inside db/migrations
Then
rake db:migrate
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 ExceptionLogger::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 ...
Not implemented yet.
To localize the interface:
en: 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 exception_logger config.after_initialize do ExceptionLogger::LoggedExceptionsController.class_eval do before_filter :authorize protected def authorize redirect_to main_app.admin_login_path unless admin_loggined? end def admin_loggined? session[:admin_user_id].present? end end end
MIT License. See LICENSE for details.