Skip to content

Commit ba86519

Browse files
committed
Not to load WinevtXMLparser by default
WinevtXMLparser is not a mandatory dependency. We need it only when enabling `render_as_xml`. So, this plugin should not load it by default. It can cause unintended NotFoundPluginError. Signed-off-by: Daijiro Fukuda <[email protected]>
1 parent 5a294c5 commit ba86519

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

lib/fluent/plugin/in_windows_eventlog2.rb

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class ReconnectError < Fluent::UnrecoverableError; end
6464
end
6565

6666
config_section :parse do
67-
config_set_default :@type, 'winevt_xml'
67+
config_set_default :@type, 'windows_eventlog2_dummy'
6868
config_set_default :estimate_current_event, false
6969
end
7070

@@ -122,7 +122,12 @@ def configure(conf)
122122
@winevt_xml = false
123123
@parser = nil
124124
if @render_as_xml
125-
@parser = parser_create
125+
parser_config = @parser_configs.first
126+
if parser_config["@type"] == "windows_eventlog2_dummy"
127+
@parser = parser_create(usage: "parse_xml", type: "winevt_xml", conf: conf.elements("parse").first)
128+
else
129+
@parser = parser_create
130+
end
126131
@winevt_xml = @parser.respond_to?(:winevt_xml?) && @parser.winevt_xml?
127132
class << self
128133
alias_method :on_notify, :on_notify_xml
@@ -407,4 +412,16 @@ def to_key(key)
407412
end
408413
####
409414
end
415+
416+
class WindowsEventLog2DummyParser < Parser
417+
Fluent::Plugin.register_parser('windows_eventlog2_dummy', self)
418+
419+
def configure(conf)
420+
super
421+
end
422+
423+
def parse(text)
424+
raise NotImplementedError, "This is a dummy parser for the default setting and can not be used actually."
425+
end
426+
end
410427
end

test/plugin/test_in_windows_eventlog2.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,18 @@ def test_configure
176176
])
177177
end
178178
end
179+
180+
test "default parser should not be WinevtXMLparser" do
181+
# Because it is not a mandatory dependency.
182+
d = create_driver CONFIG
183+
assert_equal 1, d.instance._parsers.size
184+
assert_not_equal "Fluent::Plugin::WinevtXMLparser", d.instance._parsers.values.first.class.name
185+
end
186+
187+
test "parser should be WinevtXMLparser if render_as_xml is enabled" do
188+
d = create_driver XML_RENDERING_CONFIG
189+
assert_equal Fluent::Plugin::WinevtXMLparser, d.instance.instance_variable_get(:@parser).class
190+
end
179191
end
180192

181193
data("Japanese" => ["ja_JP", false],

0 commit comments

Comments
 (0)