DEV: Unsubscribe from ActionView log events when lograge is enabled. (#27763)
This commit updates the `101-lograge` initializer to unsubscribe from log events logged by `ActionView::LogSubscriber`. This is what the `lograge` gem has been doing but its implementation is not compatible with Rails 7.1 and we started getting noise in our logs when lograge is enabled.
This commit is contained in:
parent
1461dfded3
commit
3aaece3235
|
@ -1,10 +1,47 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
Rails.application.config.to_prepare do
|
if (Rails.env.production? && SiteSetting.logging_provider == "lograge") ||
|
||||||
if (Rails.env.production? && SiteSetting.logging_provider == "lograge") ||
|
(ENV["ENABLE_LOGRAGE"] == "1")
|
||||||
(ENV["ENABLE_LOGRAGE"] == "1")
|
require "lograge"
|
||||||
require "lograge"
|
|
||||||
|
|
||||||
|
Rails.application.config.after_initialize do
|
||||||
|
def unsubscribe(component_name, subscriber)
|
||||||
|
subscriber
|
||||||
|
.public_methods(false)
|
||||||
|
.reject { |method| method.to_s == "call" }
|
||||||
|
.each do |event|
|
||||||
|
ActiveSupport::Notifications
|
||||||
|
.notifier
|
||||||
|
.all_listeners_for("#{event}.#{component_name}")
|
||||||
|
.each do |listener|
|
||||||
|
if listener
|
||||||
|
.instance_variable_get("@delegate")
|
||||||
|
.class
|
||||||
|
.to_s
|
||||||
|
.start_with?("#{component_name.to_s.classify}::LogSubscriber")
|
||||||
|
ActiveSupport::Notifications.unsubscribe listener
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# This is doing what the `lograge` gem is doing but has stopped working after we upgraded to Rails 7.1 and the `lograge`
|
||||||
|
# gem does not seem to be maintained anymore so we're shipping our own fix. In the near term, we are considering
|
||||||
|
# dropping the lograge gem and just port the relevant code to our codebase.
|
||||||
|
#
|
||||||
|
# Basically, this code silences log events coming from `ActionView::Logsubscriber` and `ActionController::LogSubscriber`
|
||||||
|
# since those are just noise.
|
||||||
|
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
||||||
|
case subscriber
|
||||||
|
when ActionView::LogSubscriber
|
||||||
|
unsubscribe(:action_view, subscriber)
|
||||||
|
when ActionController::LogSubscriber
|
||||||
|
unsubscribe(:action_controller, subscriber)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Rails.application.config.to_prepare do
|
||||||
if Rails.configuration.multisite
|
if Rails.configuration.multisite
|
||||||
Rails.logger.formatter =
|
Rails.logger.formatter =
|
||||||
ActiveSupport::Logger::SimpleFormatter.new.extend(ActiveSupport::TaggedLogging::Formatter)
|
ActiveSupport::Logger::SimpleFormatter.new.extend(ActiveSupport::TaggedLogging::Formatter)
|
||||||
|
|
Loading…
Reference in New Issue