Sha256: d579ecc9e856b6cb27299d243a5ff2ef3e440754f5ea10dcf874f956ecefa95c

Contents?: true

Size: 1.23 KB

Versions: 9

Compression:

Stored size: 1.23 KB

Contents

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

require 'singleton'
require 'logger'
require 'sqreen/logger'

module Sqreen
  class DeferredLogger
    include Singleton

    def initialize
      @buffer = StringIO.new
      @logger = ::Logger.new(@buffer)
    end

    def debug(msg = nil, &block)
      @logger.debug(msg, &block)
    end

    def info(msg = nil, &block)
      @logger.info(msg, &block)
    end

    def warn(msg = nil, &block)
      @logger.warn(msg, &block)
    end

    def error(msg = nil, &block)
      @logger.error(msg, &block)
    end

    def fatal(msg = nil, &block)
      @logger.error(msg, &block)
    end

    def add(severity, msg = nil, &block)
      send(Sqreen::Logger::SEVERITY_TO_METHOD[severity], msg, &block)
    end

    def formatter=(value)
      @logger.formatter = value
    end

    def flush_to(logger)
      logger.instance_eval { @logdev }.write(read).tap { reset }
    end

    private

    def read
      @buffer.rewind
      @buffer.read
    end

    def reset
      buffer = StringIO.new
      logger = ::Logger.new(buffer)
      logger.formatter = @logger.formatter
      @buffer, @logger = buffer, logger
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
sqreen-1.18.6-java lib/sqreen/deferred_logger.rb
sqreen-1.18.6 lib/sqreen/deferred_logger.rb
sqreen-1.18.5-java lib/sqreen/deferred_logger.rb
sqreen-1.18.5 lib/sqreen/deferred_logger.rb
sqreen-1.18.4-java lib/sqreen/deferred_logger.rb
sqreen-1.18.4 lib/sqreen/deferred_logger.rb
sqreen-1.18.3-java lib/sqreen/deferred_logger.rb
sqreen-1.18.3 lib/sqreen/deferred_logger.rb
sqreen-1.18.3.beta2 lib/sqreen/deferred_logger.rb