Sha256: 03ff649610e6badbdd84765a9dc21398565baa64979470b3f941a6fed3bc5e72

Contents?: true

Size: 1.61 KB

Versions: 25

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require "active_support/logger_silence"
require "active_support/logger_thread_safe_level"
require "logger"

module ActiveSupport
  class Logger < ::Logger
    include LoggerSilence

    # Returns true if the logger destination matches one of the sources
    #
    #   logger = Logger.new(STDOUT)
    #   ActiveSupport::Logger.logger_outputs_to?(logger, STDOUT)
    #   # => true
    #
    #   logger = Logger.new('/var/log/rails.log')
    #   ActiveSupport::Logger.logger_outputs_to?(logger, '/var/log/rails.log')
    #   # => true
    def self.logger_outputs_to?(logger, *sources)
      loggers = if logger.is_a?(BroadcastLogger)
        logger.broadcasts
      else
        [logger]
      end

      logdevs = loggers.map { |logger| logger.instance_variable_get(:@logdev) }
      logger_sources = logdevs.filter_map { |logdev| logdev.try(:filename) || logdev.try(:dev) }

      normalize_sources(sources).intersect?(normalize_sources(logger_sources))
    end

    def initialize(*args, **kwargs)
      super
      @formatter ||= SimpleFormatter.new
    end

    # Simple formatter which only displays the message.
    class SimpleFormatter < ::Logger::Formatter
      # This method is invoked when a log event occurs
      def call(severity, timestamp, progname, msg)
        "#{String === msg ? msg : msg.inspect}\n"
      end
    end

    private
      def self.normalize_sources(sources)
        sources.map do |source|
          source = source.path if source.respond_to?(:path)
          source = File.realpath(source) if source.is_a?(String) && File.exist?(source)
          source
        end
      end
  end
end

Version data entries

25 entries across 25 versions & 3 rubygems

Version Path
activesupport-8.0.2 lib/active_support/logger.rb
tailscale_middleware-0.0.3 vendor/cache/ruby/3.4.0/gems/activesupport-8.0.1/lib/active_support/logger.rb
activesupport-8.0.1 lib/active_support/logger.rb
activesupport-8.0.0.1 lib/active_support/logger.rb
activesupport-7.2.2.1 lib/active_support/logger.rb
activesupport-8.0.0 lib/active_support/logger.rb
activesupport-7.2.2 lib/active_support/logger.rb
activesupport-8.0.0.rc2 lib/active_support/logger.rb
activesupport-7.2.1.2 lib/active_support/logger.rb
activesupport-8.0.0.rc1 lib/active_support/logger.rb
activesupport-7.2.1.1 lib/active_support/logger.rb
activesupport-8.0.0.beta1 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha9 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha8 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha7 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha4 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha3 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha2 lib/active_support/logger.rb
omg-activesupport-8.0.0.alpha1 lib/active_support/logger.rb
activesupport-7.2.1 lib/active_support/logger.rb