From 8327544eb398b0783a232bce9364b13579a38c2f Mon Sep 17 00:00:00 2001 From: Gary Gordon Date: Tue, 15 Mar 2011 14:30:19 -0400 Subject: [PATCH 1/5] including desc in sorted caused an exception to be logged --- app/controllers/logged_exceptions_controller.rb | 4 ++-- app/models/logged_exception.rb | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/controllers/logged_exceptions_controller.rb b/app/controllers/logged_exceptions_controller.rb index ba34d3f..e2d77ef 100644 --- a/app/controllers/logged_exceptions_controller.rb +++ b/app/controllers/logged_exceptions_controller.rb @@ -40,7 +40,7 @@ def query format.js end end - + def feed @exceptions = LoggedException.all @@ -51,7 +51,7 @@ def feed def show @exception = LoggedException.where(:id => params[:id]).first - + respond_to do |format| format.js format.html diff --git a/app/models/logged_exception.rb b/app/models/logged_exception.rb index c748d59..94894d9 100644 --- a/app/models/logged_exception.rb +++ b/app/models/logged_exception.rb @@ -11,7 +11,7 @@ def create_from_exception(controller, exception, data) :backtrace => exception.backtrace, :request => controller.request end - + def host_name `hostname -s`.chomp end @@ -23,12 +23,12 @@ def host_name scope :by_action, lambda {|action_name| where(:action_name => action_name)} scope :message_like, lambda {|query| where(:message.matches => "%#{query}%")} scope :days_old, lambda {|day_number| where(:created_at.gteq => day_number.to_f.days.ago.utc)} - scope :sorted, order(:created_at.desc) - + scope :sorted, order(:created_at) + def name "#{self.exception_class} in #{self.controller_action}" end - + def backtrace=(trace) trace = sanitize_backtrace(trace) * "\n" unless trace.is_a?(String) write_attribute :backtrace, trace @@ -43,7 +43,7 @@ def request=(request) env << '* ' + ("%-*s: %s" % [max.length, key, request.env[key].to_s.strip]) end write_attribute(:environment, (env << "* Process: #{$$}" << "* Server : #{self.class.host_name}") * "\n") - + write_attribute(:request, [ "* URL:#{" #{request.method.to_s.upcase}" unless request.get?} #{request.protocol}#{request.env["HTTP_HOST"]}#{request.fullpath}", "* Format: #{request.format.to_s}", @@ -60,11 +60,11 @@ def controller_action def self.class_names select("DISTINCT exception_class").order(:exception_class).collect(&:exception_class) end - + def self.controller_actions select("DISTINCT controller_name, action_name").order(:controller_name,:action_name).collect(&:controller_action) end - + private @@rails_root = Pathname.new(Rails.root).cleanpath.to_s @@backtrace_regex = /^#{Regexp.escape(@@rails_root)}/ From b676a332038592944c01e50a0867922af8f4de4c Mon Sep 17 00:00:00 2001 From: Gary Gordon Date: Wed, 25 May 2011 15:27:08 -0400 Subject: [PATCH 2/5] remove meta_where dependency --- Rakefile | 1 - app/models/logged_exception.rb | 4 ++-- lib/exception_logger/engine.rb | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Rakefile b/Rakefile index a5cdb2b..619ee32 100644 --- a/Rakefile +++ b/Rakefile @@ -13,7 +13,6 @@ begin gem.test_files = Dir["{test}/**/*"] gem.add_dependency 'rails', '>=3.0.0' gem.add_dependency "will_paginate", ">= 3.0.pre2" - gem.add_dependency "meta_where", ">= 0.5.2" gem.add_dependency "i18n", ">= 0.4.1" gem.add_development_dependency "shoulda", ">= 2.11.3" gem.extra_rdoc_files = ["LICENSE","README.rdoc"] diff --git a/app/models/logged_exception.rb b/app/models/logged_exception.rb index 94894d9..c5aa69b 100644 --- a/app/models/logged_exception.rb +++ b/app/models/logged_exception.rb @@ -21,8 +21,8 @@ def host_name scope :by_controller_and_action, lambda {|controller_name, action_name| where(:controller_name => controller_name, :action_name => action_name)} scope :by_controller, lambda {|controller_name| where(:controller_name => controller_name)} scope :by_action, lambda {|action_name| where(:action_name => action_name)} - scope :message_like, lambda {|query| where(:message.matches => "%#{query}%")} - scope :days_old, lambda {|day_number| where(:created_at.gteq => day_number.to_f.days.ago.utc)} + scope :message_like, lambda {|query| where('message like ?', "%#{query}%")} + scope :days_old, lambda {|day_number| where('created_at >= ?', day_number.to_f.days.ago.utc)} scope :sorted, order(:created_at) def name diff --git a/lib/exception_logger/engine.rb b/lib/exception_logger/engine.rb index 2dcf2dc..ad81b3d 100644 --- a/lib/exception_logger/engine.rb +++ b/lib/exception_logger/engine.rb @@ -2,7 +2,6 @@ require "rails" require "will_paginate" require "i18n" -require "meta_where" module ExceptionLogger class Engine < Rails::Engine From 5352ec7955e2765d8829b6c93002d03073ec751e Mon Sep 17 00:00:00 2001 From: Gary Gordon Date: Mon, 13 Jun 2011 09:39:04 -0400 Subject: [PATCH 3/5] when removing metawhere reversed order of sort, put it right --- app/models/logged_exception.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/logged_exception.rb b/app/models/logged_exception.rb index c5aa69b..60d5276 100644 --- a/app/models/logged_exception.rb +++ b/app/models/logged_exception.rb @@ -23,7 +23,7 @@ def host_name scope :by_action, lambda {|action_name| where(:action_name => action_name)} scope :message_like, lambda {|query| where('message like ?', "%#{query}%")} scope :days_old, lambda {|day_number| where('created_at >= ?', day_number.to_f.days.ago.utc)} - scope :sorted, order(:created_at) + scope :sorted, order("created_at DESC") def name "#{self.exception_class} in #{self.controller_action}" From 9c9d943412812fb44cfc529eefa225a4c9300d9c Mon Sep 17 00:00:00 2001 From: mmelni200 Date: Fri, 25 May 2012 12:21:25 -0400 Subject: [PATCH 4/5] iTRC-2928: filter logged_exceptions --- app/models/logged_exception.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/logged_exception.rb b/app/models/logged_exception.rb index 60d5276..7e2b4f8 100644 --- a/app/models/logged_exception.rb +++ b/app/models/logged_exception.rb @@ -1,8 +1,14 @@ class LoggedException < ActiveRecord::Base class << self def create_from_exception(controller, exception, data) + + #filters = Rails.application.config.filter_parameters + #f = ActionDispatch::Http::ParameterFilter.new filters + #f.filter :password => {:password=>"[FILTERED]"} + message = exception.message.inspect message << "\n* Extra Data\n\n#{data}" unless data.blank? + e = create! \ :exception_class => exception.class.name, :controller_name => controller.controller_path, @@ -38,6 +44,7 @@ def request=(request) if request.is_a?(String) write_attribute :request, request else + request = filter_request(request) max = request.env.keys.max { |a,b| a.length <=> b.length } env = request.env.keys.sort.inject [] do |env, key| env << '* ' + ("%-*s: %s" % [max.length, key, request.env[key].to_s.strip]) @@ -47,7 +54,7 @@ def request=(request) write_attribute(:request, [ "* URL:#{" #{request.method.to_s.upcase}" unless request.get?} #{request.protocol}#{request.env["HTTP_HOST"]}#{request.fullpath}", "* Format: #{request.format.to_s}", - "* Parameters: #{request.parameters.inspect}", + "* Parameters: #{request.filtered_parameters.inspect}", "* Rails Root: #{rails_root}" ] * "\n") end @@ -76,4 +83,15 @@ def sanitize_backtrace(trace) def rails_root @@rails_root end + + def filter_request(request) + filtered = request.filtered_parameters + request.env["action_dispatch.request.parameters"] = filtered + request.env["action_dispatch.request.request_parameters"] = filtered + request.env["rack.request.form_hash"] = filtered + + request + end + end + From 67e6c1e039a5f20564122582a29ba419d0e62c2f Mon Sep 17 00:00:00 2001 From: Gary Gordon Date: Thu, 27 Sep 2012 11:41:19 -0400 Subject: [PATCH 5/5] replace read_inheritable_attribute --- lib/exception_logger/exception_loggable.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/exception_logger/exception_loggable.rb b/lib/exception_logger/exception_loggable.rb index 16ca303..0a9b3b1 100644 --- a/lib/exception_logger/exception_loggable.rb +++ b/lib/exception_logger/exception_loggable.rb @@ -37,10 +37,10 @@ def consider_local(*args) end def local_addresses - addresses = read_inheritable_attribute(:local_addresses) + addresses = read_attribute(:local_addresses) unless addresses addresses = [IPAddr.new("127.0.0.1")] - write_inheritable_attribute(:local_addresses, addresses) + write_attribute(:local_addresses, addresses) end addresses end @@ -48,9 +48,9 @@ def local_addresses def exception_data(deliverer = self, &block) deliverer = block if block if deliverer == self - read_inheritable_attribute(:exception_data) + read_attribute(:exception_data) else - write_inheritable_attribute(:exception_data, deliverer) + write_attribute(:exception_data, deliverer) end end end @@ -83,4 +83,4 @@ def log_exception(exception) LoggedException.create_from_exception(self, exception, data) end end -end \ No newline at end of file +end