class Fluent::JVMGCLogInput

Public Instance Methods

configure_parser(conf) click to toggle source
# File lib/fluent/plugin/in_jvm_gclog.rb, line 23
def configure_parser(conf)
  @parser = JVMGCLog.new
  @hostname = `hostname -s`.strip
end
parse_lines(lines) click to toggle source
# File lib/fluent/plugin/in_jvm_gclog.rb, line 28
def parse_lines(lines)
  es = MultiEventStream.new
  chunks = @parser.recognize_chunks(lines)
  records = @parser.parse_chunks(chunks)
  records.each { |record|
    begin
      time = record.delete("time")
      record["host"] = @hostname
      if time && record
        es.add(time, record)
      else
        log.warn "pattern not match: #{record.inspect}"
      end
    rescue => e
      log.warn record, :error => e.to_s
      log.debug_backtrace(e.backtrace)
    end
  }
  es
end
receive_lines(lines, tail_watcher = nil) click to toggle source
# File lib/fluent/plugin/in_jvm_gclog.rb, line 49
def receive_lines(lines, tail_watcher = nil)
  es = parse_lines(lines)
  unless es.empty?
    tag = if @tag_prefix || @tag_suffix
            @tag_prefix + tail_watcher.tag + @tag_suffix
          else
            @tag
          end
    begin
      if defined? router
        router.emit_stream(tag, es)
      else
        Engine.emit_stream(tag, es)
      end
    rescue
      # ignore errors. Engine shows logs and backtraces.
    end
  end
end