lib/timber/frameworks/rails.rb in timber-2.0.20 vs lib/timber/frameworks/rails.rb in timber-2.0.21

- old
+ new

@@ -46,60 +46,26 @@ # Installs Timber into your Rails app automatically. class Railtie < ::Rails::Railtie config.timber = Config.instance - # Initialize Timber immediately after the logger in case anything uses the logger - # during the initialization process. - initializer(:timber, after: :initialize_logger) do - logger = Rails.ensure_timber_logger(::Rails.logger) - Rails.set_logger(logger) + config.before_initialize do + Timber::Config.instance.logger = Proc.new { ::Rails.logger } + end + # Must be loaded after initializers so that we respect any Timber configuration + # set + initializer(:timber, after: :load_config_initializers) do Integrations.integrate! + # Install the Rack middlewares so that we capture structured data instead of + # raw text logs. timber_operations = Integrations::Rack.middlewares.collect do |middleware_class| [:use, [middleware_class], nil] end config.app_middleware.timber_operations = timber_operations end - end - - # This builds a new Timber::Logger from an existing logger. This allows us to transparentl - # switch users onto the Timber::Logger since we support a more useful logging API. - def self.ensure_timber_logger(existing_logger) - if existing_logger.is_a?(Logger) - return existing_logger - end - - log_device = existing_logger.instance_variable_get(:@logdev).try(:dev) - logger = Logger.new(log_device) - logger.level = existing_logger.try(:level) || Logger::DEBUG - if defined?(::ActiveSupport::TaggedLogging) - logger = ::ActiveSupport::TaggedLogging.new(logger) - end - logger - end - - # Sets the Rails logger. Rails - def self.set_logger(logger) - if defined?(::ActiveSupport::TaggedLogging) && !logger.is_a?(::ActiveSupport::TaggedLogging) - logger = ::ActiveSupport::TaggedLogging.new(logger) - end - - Config.instance.logger = logger - - # Set the various Rails framework loggers. We *have* to do this because Rails - # internally sets these with an ActiveSupport.onload(:active_record) { } callback. - # We don't have an opportunity to intercept this since the :initialize_logger - # initializer loads these modules. Moreover, earlier version of rails don't do this - # at all, hence the defined? checks. Yay for being implicit. - ::ActionCable::Server::Base.logger = logger if defined?(::ActionCable::Server::Base) && ::ActionCable::Server::Base.respond_to?(:logger=) - ::ActionController::Base.logger = logger if defined?(::ActionController::Base) && ::ActionController::Base.respond_to?(:logger=) - ::ActionMailer::Base.logger = logger if defined?(::ActionMailer::Base) && ::ActionMailer::Base.respond_to?(:logger=) - ::ActionView::Base.logger = logger if defined?(::ActionView::Base) && ::ActionView::Base.respond_to?(:logger=) - ::ActiveRecord::Base.logger = logger if defined?(::ActiveRecord::Base) && ::ActiveRecord::Base.respond_to?(:logger=) - ::Rails.logger = logger end end end end \ No newline at end of file