Skip to content

Commit ed9660c

Browse files
directly use buftok instead of going through the line codec
1 parent 1eb838d commit ed9660c

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

lib/logstash/codecs/json_lines.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# encoding: utf-8
22
require "logstash/codecs/base"
3-
require "logstash/codecs/line"
3+
require "logstash/util/charset"
4+
require "logstash/util/buftok"
45
require "logstash/json"
56

67
# This codec will decode streamed JSON that is newline delimited.
@@ -13,7 +14,6 @@
1314
class LogStash::Codecs::JSONLines < LogStash::Codecs::Base
1415
config_name "json_lines"
1516

16-
1717
# The character encoding used in this codec. Examples include `UTF-8` and
1818
# `CP1252`
1919
#
@@ -30,15 +30,15 @@ class LogStash::Codecs::JSONLines < LogStash::Codecs::Base
3030

3131
public
3232

33-
def initialize(params={})
34-
super(params)
35-
@lines = LogStash::Codecs::Line.new("delimiter" => @delimiter)
36-
@lines.charset = @charset
33+
def register
34+
@buffer = FileWatch::BufferedTokenizer.new(@delimiter)
35+
@converter = LogStash::Util::Charset.new(@charset)
36+
@converter.logger = @logger
3737
end
3838

3939
def decode(data)
40-
@lines.decode(data) do |event|
41-
yield guard(event, data)
40+
@buffer.extract(data).each do |line|
41+
yield guard(@converter.convert(line))
4242
end
4343
end # def decode
4444

@@ -50,11 +50,11 @@ def encode(event)
5050

5151
private
5252

53-
def guard(event, data)
53+
def guard(data)
5454
begin
55-
LogStash::Event.new(LogStash::Json.load(event["message"]))
55+
LogStash::Event.new(LogStash::Json.load(data))
5656
rescue LogStash::Json::ParserError => e
57-
LogStash::Event.new("message" => event["message"], "tags" => ["_jsonparsefailure"])
57+
LogStash::Event.new("message" => data, "tags" => ["_jsonparsefailure"])
5858
end
5959
end
6060

0 commit comments

Comments
 (0)