Sha256: 64797c3b1edd0f957a2f8aa4c824bc659eabcedaa27fe98ff6f35022757523e0

Contents?: true

Size: 635 Bytes

Versions: 2

Compression:

Stored size: 635 Bytes

Contents

module TeeHelper
  def tee(*loggers)
    return TeeLogger.new(self, *loggers)
  end
end

class TeeLogger
  def initialize(*loggers)
    @loggers = Set.new(loggers.flatten.compact)
  end

  attr :loggers

  def self.logger_methods
    Set.new(Logger.instance_methods) - Set.new(Object.instance_methods + %w(tee))
  end

  logger_methods.each do |method|
    define_method(method) do |*args|
      @loggers.each { |l| l.send(method, *args) }
    end
  end
  
  include TeeHelper
end

class Logger
  include TeeHelper
end

class MinimalLogFormat
  def call(severity, time, progname, msg)
    "[#{severity.rjust(8)}] #{msg}\n"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lsync-1.2.5 lib/lsync/tee_logger.rb
lsync-1.2.1 lib/lsync/tee_logger.rb