11# encoding: utf-8
22require "logstash/codecs/base"
3- require "logstash/codecs/line"
3+ require "logstash/util/charset"
4+ require "logstash/util/buftok"
45require "logstash/json"
56
67# This codec will decode streamed JSON that is newline delimited.
1314class 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