Class: LogStash::Codecs::Line

Inherits:
Base
  • Object
show all
Defined in:
lib/logstash/codecs/line.rb

Overview

Line-oriented text data.

Decoding behavior: Only whole line events will be emitted.

Encoding behavior: Each event will be emitted with a trailing newline.

Instance Method Summary collapse

Instance Method Details

#decode(data) ⇒ Object



37
38
39
40
41
# File 'lib/logstash/codecs/line.rb', line 37

def decode(data)
  @buffer.extract(data).each do |line|
    yield LogStash::Event.new("message" => @converter.convert(line))
  end
end

#encode(event) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/logstash/codecs/line.rb', line 52

def encode(event)
  if event.is_a? LogStash::Event and @format
    @on_event.call(event, event.sprintf(@format) + @delimiter)
  else
    @on_event.call(event, event.to_s + @delimiter)
  end
end

#flush(&block) ⇒ Object



44
45
46
47
48
49
# File 'lib/logstash/codecs/line.rb', line 44

def flush(&block)
  remainder = @buffer.flush
  if !remainder.empty?
    block.call(LogStash::Event.new("message" => @converter.convert(remainder)))
  end
end

#registerObject



29
30
31
32
33
34
# File 'lib/logstash/codecs/line.rb', line 29

def register
  require "logstash/util/buftok"
  @buffer = FileWatch::BufferedTokenizer.new(@delimiter)
  @converter = LogStash::Util::Charset.new(@charset)
  @converter.logger = @logger
end