Sha256: 44bb0e75eb348a994dc5f05318ecae7f535b0a6d828f050e51076d377c0eb075

Contents?: true

Size: 901 Bytes

Versions: 1

Compression:

Stored size: 901 Bytes

Contents

require 'semlogr/sinks/seq/clef_formatter'
require 'semlogr/sinks/seq/seq_api'
require 'semlogr/sinks/batching'
require 'semlogr/self_logger'

module Semlogr
  module Sinks
    module Seq
      class Sink < Semlogr::Sinks::Batching
        def initialize(client: nil, formatter: nil, **opts)
          @client = client || create_client(opts)
          @formatter = formatter || ClefFormatter.new

          super(opts)
        end

        def emit_batch(log_events)
          payload = ''

          log_events.each do |log_event|
            payload << @formatter.format(log_event)
          end

          @client.post_events(payload)
        end

        private

        def create_client(opts)
          server_url = opts.fetch(:server_url, 'http://localhost:5341')
          api_key = opts.fetch(:api_key, nil)

          SeqApi.new(server_url, api_key)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
semlogr-sinks-seq-0.1.6 lib/semlogr/sinks/seq/sink.rb