Class: Fluent::Plugin::WinevtSAXparser

Inherits:
Parser
  • Object
show all
Defined in:
lib/fluent/plugin/parser_winevt_sax.rb

Instance Method Summary collapse

Constructor Details

#initializeWinevtSAXparser

Returns a new instance of WinevtSAXparser.



10
11
12
13
# File 'lib/fluent/plugin/parser_winevt_sax.rb', line 10

def initialize
  super
  @use_nokogiri = false
end

Instance Method Details

#configure(conf) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fluent/plugin/parser_winevt_sax.rb', line 15

def configure(conf)
  super
  if @parser != :rexml
    begin
      require 'nokogiri'
      require 'fluent/plugin/winevt_sax_document_nokogiri'
      @use_nokogiri = true
    rescue
      if @parser == :nokogiri
        raise Fluent::ConfigError,
              "Nokogiri is required when 'parser nokogiri' is specified, but it isn't installed. " \
              "Install nokogiri, or set 'parser' to 'rexml' or 'auto': #{e.message}"
      end
    end
  end

  if !@use_nokogiri
    require 'rexml/parsers/sax2parser'
    require 'fluent/plugin/winevt_sax_document_rexml'
  end
end

#parse(text) {|time, evtxml.result| ... } ⇒ Object

Yields:

  • (time, evtxml.result)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/fluent/plugin/parser_winevt_sax.rb', line 45

def parse(text)
  if @use_nokogiri
    evtxml = WinevtXMLDocumentNokogiri.new(@preserve_qualifiers)
    parser = Nokogiri::XML::SAX::Parser.new(evtxml)
    parser.parse(text)
  else
    evtxml = WinevtXMLDocumentREXML.new(@preserve_qualifiers)
    parser = REXML::Parsers::SAX2Parser.new(text)
    parser.listen(evtxml)
    parser.parse
  end
  time = @estimate_current_event ? Fluent::EventTime.now : nil
  yield time, evtxml.result
end

#preserve_qualifiers?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/fluent/plugin/parser_winevt_sax.rb', line 41

def preserve_qualifiers?
  @preserve_qualifiers
end

#winevt_xml?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/fluent/plugin/parser_winevt_sax.rb', line 37

def winevt_xml?
  true
end