exception_logger icon indicating copy to clipboard operation
exception_logger copied to clipboard

Log exceptions inside a database table.

= Exception Logger for Rails 4

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.

== Install

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

=== 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 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

=== Inside your config/routes.rb

mount ExceptionLogger::Engine => "/exception_logger"

=== Database Setup

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

== 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 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 ...

== Testing & Development

Not implemented yet.

== Usage

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

==License

MIT License. See LICENSE for details.