module Elb2Logstalgia

Constants

VERSION

Public Instance Methods

parseLine(line) click to toggle source
# File lib/elb2logstalgia.rb, line 8
def parseLine(line)
  begin
    s = StringScanner.new(line)

    parsed = {}

    # timestamp
    parsed[:timestamp] = s.scan(/\S+/)
    s.scan(/\s+/)

    # hostname
    s.scan(/\S+\s+/)

    # source IP
    parsed[:hostname] = s.scan(/\S+:/).chop
    s.scan(/\S+\s+/)

    # dest IP
    s.scan(/\S+\s+/)

    # timing data
    s.scan(/(\S+\s+){3}/)

    # ELB response code
    s.scan(/\S+\s+/)

    # backend response code
    parsed[:response_code] = s.scan(/\S+/)
    s.scan(/\s+/)

    # ELB response size
    s.scan(/\S+\s+/)

    # backend response size
    parsed[:response_size] = s.scan(/\S+/)
    s.scan(/\s+/)

    # method
    s.scan(/\S+\s+/)

    # path
    parsed[:path] = s.scan(/\S+/)

    parsed

  rescue StandardError => e
    raise e
  end
end