Sha256: 4b62aafda193c6af5ab03a458d99af4e99ece00db1fec3ad2287f9c0c3d7c8e3

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

module Prefab
  class InternalLogger < SemanticLogger::Logger

    def initialize(klass)
      default_level = ENV['PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL'] ? ENV['PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL'].downcase.to_sym : :warn
      super(klass, default_level)
      instances << self
    end

    def log(log, message = nil, progname = nil, &block)
      return if recurse_check[local_log_id]
      recurse_check[local_log_id] = true
      begin
        super(log, message, progname, &block)
      ensure
        recurse_check[local_log_id] = false
      end
    end

    def local_log_id
      Thread.current.__id__
    end

    # Our client outputs debug logging,
    # but if you aren't using Prefab logging this could be too chatty.
    # If you aren't using prefab log filter, only log warn level and above
    def self.using_prefab_log_filter!
      @@instances.each do |l|
        l.level = :trace
      end
    end

    private

    def instances
      @@instances ||= []
    end

    def recurse_check
      @recurse_check ||=Concurrent::Map.new(initial_capacity: 2)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
prefab-cloud-ruby-1.8.8.pre.1 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.7 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.6 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.5 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.4 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.3 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.2 lib/prefab/internal_logger.rb
prefab-cloud-ruby-1.8.1 lib/prefab/internal_logger.rb