Sha256: 383ef9d46c43a9d83f0fcd9590e5cbfdaecf9937310294f9ff61bae8d97de1a7

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 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)
    begin
      payload = event['protoPayload']
      payload.delete '@type'
      lines = payload.delete 'line'
      if lines
        lines.map.with_index { |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
        }
      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.20.0 lib/logstash/filters/google_appengine.rb