class Fluent::Plugin::JSONParser
Public Instance Methods
configure(conf)
click to toggle source
Calls superclass method
Fluent::Plugin::Parser#configure
# File lib/fluent/plugin/parser_json.rb, line 41 def configure(conf) if conf.has_key?('time_format') conf['time_type'] ||= 'string' end super @load_proc, @error_class = configure_json_parser(@json_parser) end
configure_json_parser(name)
click to toggle source
# File lib/fluent/plugin/parser_json.rb, line 50 def configure_json_parser(name) case name when :oj raise LoadError unless Fluent::OjOptions.available? [Oj.method(:load), Oj::ParseError] when :json then [JSON.method(:load), JSON::ParserError] when :yajl then [Yajl.method(:load), Yajl::ParseError] else raise "BUG: unknown json parser specified: #{name}" end rescue LoadError => ex name = :yajl if log if /\boj\z/.match?(ex.message) log.info "Oj is not installed, and failing back to Yajl for json parser" else log.warn ex.message end end retry end
parse(text) { |time, record| ... }
click to toggle source
# File lib/fluent/plugin/parser_json.rb, line 72 def parse(text) record = @load_proc.call(text) time = parse_time(record) if @execute_convert_values time, record = convert_values(time, record) end yield time, record rescue @error_class, EncodingError # EncodingError is for oj 3.x or later yield nil, nil end
parse_io(io, &block)
click to toggle source
# File lib/fluent/plugin/parser_json.rb, line 87 def parse_io(io, &block) y = Yajl::Parser.new y.on_parse_complete = ->(record){ block.call(parse_time(record), record) } y.parse(io, @stream_buffer_size) end
parser_type()
click to toggle source
# File lib/fluent/plugin/parser_json.rb, line 83 def parser_type :text end