19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/logstash/filters/esquerystring.rb', line 19
def filter(event)
values = []
@source.each do |field|
next unless event.include?(field)
value = event.get(field)
next if value.nil?
value = [value] unless value.is_a?(Array)
next if value.length == 0
values += value
end
return if values.length == 0
values = values.uniq.map { |x| '"' + x + '"' }
values_str = "(" + values.join(" OR ") + ")"
if values_str.length > @maxlength
msg = "Produced too long query string (>#{@maxlength}): #{values_str}"
if @length_autofix
while values_str.length > @maxlength
values.pop
values_str = "(" + values.join(" OR ") + ")"
end
@logger.warn(msg + "; Autofixed to: #{values_str}")
event.set(@target, values_str)
else
@logger.error(msg)
end
else
event.set(@target, values_str)
end
end
|