Class: FluentExt::TextParser::ApacheParser

Inherits:
GenericParser show all
Includes:
Fluent::Configurable
Defined in:
lib/fluent/plugin/fixed_parser.rb

Constant Summary collapse

REGEXP =
/^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/

Instance Attribute Summary

Attributes inherited from GenericParser

#log

Instance Method Summary collapse

Methods inherited from GenericParser

#parse_time

Constructor Details

#initializeApacheParser

Returns a new instance of ApacheParser.



149
150
151
152
153
154
# File 'lib/fluent/plugin/fixed_parser.rb', line 149

def initialize
   super

   @time_key = "time"
   @time_format = "%d/%b/%Y:%H:%M:%S %z"
end

Instance Method Details

#call(text) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# File 'lib/fluent/plugin/fixed_parser.rb', line 156

def call(text)
  m = REGEXP.match(text)
  unless m
    unless @suppress_parse_error_log
      @log.warn "pattern not match: #{text.inspect}"
    end

    return nil, nil
  end

  host = m['host']
  host = (host == '-') ? nil : host

  user = m['user']
  user = (user == '-') ? nil : user

  time = m['time']

  method = m['method']
  path = m['path']

  code = m['code'].to_i
  code = nil if code == 0

  size = m['size']
  size = (size == '-') ? nil : size.to_i

  referer = m['referer']
  referer = (referer == '-') ? nil : referer

  agent = m['agent']
  agent = (agent == '-') ? nil : agent

  record = {
    "time" => time,
    "host" => host,
    "user" => user,
    "method" => method,
    "path" => path,
    "code" => code,
    "size" => size,
    "referer" => referer,
    "agent" => agent,
  }

  parse_time(record)
end