Merge pull request #3970 from lest/backtrace-when-silenced

log exception backtrace when all backtrace lines silenced
This commit is contained in:
José Valim
2011-12-13 11:43:13 -08:00
2 changed files with 17 additions and 1 deletions

View File

@@ -59,10 +59,13 @@ module ActionDispatch
exception = wrapper.exception
trace = wrapper.application_trace
trace = wrapper.framework_trace if trace.empty?
ActiveSupport::Deprecation.silence do
message = "\n#{exception.class} (#{exception.message}):\n"
message << exception.annoted_source_code.to_s if exception.respond_to?(:annoted_source_code)
message << " " << wrapper.application_trace.join("\n ")
message << " " << trace.join("\n ")
logger.fatal("#{message}\n\n")
end
end

View File

@@ -122,4 +122,17 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest
get "/", {}, {'action_dispatch.show_exceptions' => true, 'action_dispatch.backtrace_cleaner' => cleaner}
assert_match(/passed backtrace cleaner/, body)
end
test 'logs exception backtrace when all lines silenced' do
output = StringIO.new
backtrace_cleaner = ActiveSupport::BacktraceCleaner.new
backtrace_cleaner.add_silencer { true }
env = {'action_dispatch.show_exceptions' => true,
'action_dispatch.logger' => Logger.new(output),
'action_dispatch.backtrace_cleaner' => backtrace_cleaner}
get "/", {}, env
assert_operator (output.rewind && output.read).lines.count, :>, 10
end
end