Sha256: 147c41dd55e47d43fdcd960b03efae7a9228d2dd249123ef3b971964881e92bf

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "logstash/environment"
require 'digest'

class LogStash::Filters::GoogleAppengine < LogStash::Filters::Base

  config_name "google_appengine"

  public
  def register
    @md5 = Digest::MD5.new
  end

  def filter(event)
    return unless filter?(event)
    begin
      payload = event['protoPayload']
      payload.delete '@type'
      lines = payload.delete 'line'
      if lines
        lines.each_with_index do  |line, i|
          line_data = payload.merge line
          line_data['_id'] = @md5.hexdigest line_data['requestId'] + i.to_s
          line_data['message'] = line_data.delete 'logMessage'

          new_event = LogStash::Event::new(line_data)
          filter_matched(new_event)
          yield new_event
        end
      else
        payload['_id'] = @md5.hexdigest payload['requestId']
        payload['time'] = payload['endTime']

        new_event = LogStash::Event::new(payload)
        filter_matched(new_event)
        yield new_event
      end
      event.cancel
    rescue => e
      @logger.error "Failed to process event", :error => e, :data => event
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
logstash-filter-google_appengine-0.30.0 lib/logstash/filters/google_appengine.rb