Class: Fluent::TextParser::ApacheParser
- Defined in:
- lib/fluent/parser.rb
Constant Summary collapse
- REGEXP =
/^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/- TIME_FORMAT =
"%d/%b/%Y:%H:%M:%S %z"
Constants included from Configurable
Configurable::CONFIG_TYPE_REGISTRY
Instance Attribute Summary
Attributes inherited from Parser
Instance Method Summary collapse
-
#initialize ⇒ ApacheParser
constructor
A new instance of ApacheParser.
- #parse(text) ⇒ Object
- #patterns ⇒ Object
Methods inherited from Parser
Methods included from Configurable
#config, #configure, included, lookup_type, register_type
Constructor Details
#initialize ⇒ ApacheParser
Returns a new instance of ApacheParser.
468 469 470 471 472 |
# File 'lib/fluent/parser.rb', line 468 def initialize super @time_parser = TimeParser.new(TIME_FORMAT) @mutex = Mutex.new end |
Instance Method Details
#parse(text) ⇒ Object
478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 |
# File 'lib/fluent/parser.rb', line 478 def parse(text) m = REGEXP.match(text) unless m if block_given? yield nil, nil return else return nil, nil end end host = m['host'] host = (host == '-') ? nil : host user = m['user'] user = (user == '-') ? nil : user time = m['time'] time = @mutex.synchronize { @time_parser.parse(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 = { "host" => host, "user" => user, "method" => method, "path" => path, "code" => code, "size" => size, "referer" => referer, "agent" => agent, } record["time"] = m['time'] if @keep_time_key if block_given? yield time, record else return time, record end end |
#patterns ⇒ Object
474 475 476 |
# File 'lib/fluent/parser.rb', line 474 def patterns {'format' => REGEXP, 'time_format' => TIME_FORMAT} end |