mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Merge pull request #3190 from riking/thrown_logging
Delete old ErrorLog, use Logster for 500 errors
This commit is contained in:
@@ -15,7 +15,7 @@ module Discourse
|
||||
# error_context() method in Jobs::Base to pass the job arguments and any
|
||||
# other desired context.
|
||||
# See app/jobs/base.rb for the error_context function.
|
||||
def self.handle_exception(ex, context = {}, parent_logger = nil)
|
||||
def self.handle_job_exception(ex, context = {}, parent_logger = nil)
|
||||
context ||= {}
|
||||
parent_logger ||= SidekiqExceptionHandler
|
||||
|
||||
@@ -26,6 +26,29 @@ module Discourse
|
||||
}.merge(context))
|
||||
end
|
||||
|
||||
def self.handle_request_exception(ex, controller, request, current_user)
|
||||
cm = RailsMultisite::ConnectionManagement
|
||||
context = {
|
||||
current_db: cm.current_db,
|
||||
current_hostname: cm.current_hostname,
|
||||
rails_action: controller.action_name,
|
||||
rails_controller: controller.controller_name,
|
||||
}
|
||||
|
||||
env = request.env.dup
|
||||
|
||||
context.each do |key, value|
|
||||
Logster.add_to_env(env, key, value)
|
||||
end
|
||||
|
||||
begin
|
||||
Thread.current[Logster::Logger::LOGSTER_ENV] = env
|
||||
Logster.logger.fatal("#{ex.class.to_s}: #{ex.message} in #{controller.controller_name}##{controller.action_name}")
|
||||
ensure
|
||||
Thread.current[Logster::Logger::LOGSTER_ENV] = nil
|
||||
end
|
||||
end
|
||||
|
||||
# Expected less matches than what we got in a find
|
||||
class TooManyMatches < Exception; end
|
||||
|
||||
|
||||
@@ -128,7 +128,7 @@ module Oneboxer
|
||||
}
|
||||
}
|
||||
rescue => e
|
||||
Discourse.handle_exception(e, message: "While trying to onebox a URL", url: url)
|
||||
Discourse.handle_job_exception(e, message: "While trying to onebox a URL", url: url)
|
||||
# return a blank hash, so rest of the code works
|
||||
{preview: "", onebox: ""}
|
||||
end
|
||||
|
||||
@@ -67,10 +67,10 @@ module Scheduler
|
||||
RailsMultisite::ConnectionManagement.establish_connection(db: db) if db
|
||||
job.call
|
||||
rescue => ex
|
||||
Discourse.handle_exception(ex, {message: "Running deferred code '#{desc}'"})
|
||||
Discourse.handle_job_exception(ex, {message: "Running deferred code '#{desc}'"})
|
||||
end
|
||||
rescue => ex
|
||||
Discourse.handle_exception(ex, {message: "Processing deferred code queue"})
|
||||
Discourse.handle_job_exception(ex, {message: "Processing deferred code queue"})
|
||||
ensure
|
||||
ActiveRecord::Base.connection_handler.clear_active_connections!
|
||||
end
|
||||
|
||||
@@ -42,13 +42,13 @@ module Scheduler
|
||||
def keep_alive
|
||||
@manager.keep_alive
|
||||
rescue => ex
|
||||
Discourse.handle_exception(ex, {message: "Scheduling manager keep-alive"})
|
||||
Discourse.handle_job_exception(ex, {message: "Scheduling manager keep-alive"})
|
||||
end
|
||||
|
||||
def reschedule_orphans
|
||||
@manager.reschedule_orphans!
|
||||
rescue => ex
|
||||
Discourse.handle_exception(ex, {message: "Scheduling manager orphan rescheduler"})
|
||||
Discourse.handle_job_exception(ex, {message: "Scheduling manager orphan rescheduler"})
|
||||
end
|
||||
|
||||
def process_queue
|
||||
@@ -66,7 +66,7 @@ module Scheduler
|
||||
# Discourse.handle_exception was already called, and we don't have any extra info to give
|
||||
failed = true
|
||||
rescue => e
|
||||
Discourse.handle_exception(e, {message: "Running a scheduled job", job: klass})
|
||||
Discourse.handle_job_exception(e, {message: "Running a scheduled job", job: klass})
|
||||
failed = true
|
||||
end
|
||||
duration = ((Time.now.to_f - start) * 1000).to_i
|
||||
@@ -77,7 +77,7 @@ module Scheduler
|
||||
@mutex.synchronize { info.write! }
|
||||
end
|
||||
rescue => ex
|
||||
Discourse.handle_exception(ex, {message: "Processing scheduled job queue"})
|
||||
Discourse.handle_job_exception(ex, {message: "Processing scheduled job queue"})
|
||||
ensure
|
||||
@running = false
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user