Sha256: 1e77b18f9d61ed88d03ce08953cf013074f6b6a4030d15a1e8b622789b42640a

Contents?: true

Size: 729 Bytes

Versions: 9

Compression:

Stored size: 729 Bytes

Contents

# Container to allow writes to multiple devices

# Code originally from:
# http://stackoverflow.com/a/6410202

module LogStashLogger
  module Device
    class MultiDelegator < Base
      attr_reader :devices

      def initialize(opts)
        @io = self
        @devices = create_devices(opts[:outputs])
        self.class.delegate(:write, :close, :close!, :flush)
      end

      private

      def create_devices(opts)
        opts.map do |device_opts|
          Device.new(device_opts)
        end
      end

      def self.delegate(*methods)
        methods.each do |m|
          define_method(m) do |*args|
            @devices.each { |device| device.send(m, *args) }
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
logstash-logger-0.20.1 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.20.0 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.19.2 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.19.1 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.19.0 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.18.1 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.18.0 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.17.0 lib/logstash-logger/device/multi_delegator.rb
logstash-logger-0.16.0 lib/logstash-logger/device/multi_delegator.rb