logstash-filter-kv 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/logstash/filters/kv.rb +19 -0
- data/logstash-filter-kv.gemspec +1 -1
- data/spec/filters/kv_spec.rb +30 -0
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a4015b34b2918460e579fb2bae5e8a9bcc61420
|
4
|
+
data.tar.gz: 97bb73a8e6f988a384753a69ade43fc13b390fc7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 881f352227e3d6bc86812f8d04152761f45f4ecbba7b2e9829b01db87b2f97791b2204c7fdab06e5d41aab006d38f8d3fbb72cfc50b5f26a39a7ce91c8fae07f
|
7
|
+
data.tar.gz: 2824c28b60c78ca4cda3eee1514d0804edc1f1544cf4e87522ae32320a37c4cfe923c0dc0c4a6ca964f8f72e21fd3b6652329fc613d4742361d8de22f65c6614
|
data/lib/logstash/filters/kv.rb
CHANGED
@@ -158,6 +158,20 @@ class LogStash::Filters::KV < LogStash::Filters::Base
|
|
158
158
|
# }
|
159
159
|
config :default_keys, :validate => :hash, :default => {}
|
160
160
|
|
161
|
+
# A bool option for removing duplicate key/value pairs. When set to false, only
|
162
|
+
# one unique key/value pair will be preserved.
|
163
|
+
#
|
164
|
+
# For example, consider a source like `from=me from=me`. `[from]` will map to
|
165
|
+
# an Array with two elements: `["me", "me"]`. to only keep unique key/value pairs,
|
166
|
+
# you could use this configuration:
|
167
|
+
# [source,ruby]
|
168
|
+
# filter {
|
169
|
+
# kv {
|
170
|
+
# allow_duplicate_values => false
|
171
|
+
# }
|
172
|
+
# }
|
173
|
+
config :allow_duplicate_values, :validate => :boolean, :default => true
|
174
|
+
|
161
175
|
def register
|
162
176
|
@trim_re = Regexp.new("[#{@trim}]") if !@trim.nil?
|
163
177
|
@trimkey_re = Regexp.new("[#{@trimkey}]") if !@trimkey.nil?
|
@@ -223,6 +237,11 @@ class LogStash::Filters::KV < LogStash::Filters::Base
|
|
223
237
|
key = event.sprintf(@prefix) + key
|
224
238
|
|
225
239
|
value = @trim.nil? ? value : value.gsub(@trim_re, "")
|
240
|
+
|
241
|
+
# Bail out if inserting duplicate value in key mapping when unique_values
|
242
|
+
# option is set to true.
|
243
|
+
next if not @allow_duplicate_values and kv_keys.has_key?(key) and kv_keys[key].include?(value)
|
244
|
+
|
226
245
|
if kv_keys.has_key?(key)
|
227
246
|
if kv_keys[key].is_a? Array
|
228
247
|
kv_keys[key].push(value)
|
data/logstash-filter-kv.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-kv'
|
4
|
-
s.version = '0.1.
|
4
|
+
s.version = '0.1.4'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "This filter helps automatically parse messages (or specific event fields) which are of the 'foo=bar' variety."
|
7
7
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
data/spec/filters/kv_spec.rb
CHANGED
@@ -433,4 +433,34 @@ describe LogStash::Filters::KV do
|
|
433
433
|
|
434
434
|
end
|
435
435
|
|
436
|
+
describe "Removing duplicate key/value pairs" do
|
437
|
+
config <<-CONFIG
|
438
|
+
filter {
|
439
|
+
kv {
|
440
|
+
field_split => "&"
|
441
|
+
source => "source"
|
442
|
+
allow_duplicate_values => false
|
443
|
+
}
|
444
|
+
}
|
445
|
+
CONFIG
|
446
|
+
|
447
|
+
sample("source" => "foo=bar&foo=yeah&foo=yeah") do
|
448
|
+
insist { subject["[foo]"] } == ["bar", "yeah"]
|
449
|
+
end
|
450
|
+
end
|
451
|
+
|
452
|
+
describe "Allow duplicate key/value pairs by default" do
|
453
|
+
config <<-CONFIG
|
454
|
+
filter {
|
455
|
+
kv {
|
456
|
+
field_split => "&"
|
457
|
+
source => "source"
|
458
|
+
}
|
459
|
+
}
|
460
|
+
CONFIG
|
461
|
+
|
462
|
+
sample("source" => "foo=bar&foo=yeah&foo=yeah") do
|
463
|
+
insist { subject["[foo]"] } == ["bar", "yeah", "yeah"]
|
464
|
+
end
|
465
|
+
end
|
436
466
|
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-kv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elasticsearch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
14
|
+
name: logstash
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - '>='
|
17
18
|
- !ruby/object:Gem::Version
|
@@ -19,10 +20,7 @@ dependencies:
|
|
19
20
|
- - <
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 2.0.0
|
22
|
-
|
23
|
-
prerelease: false
|
24
|
-
type: :runtime
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
26
24
|
requirements:
|
27
25
|
- - '>='
|
28
26
|
- !ruby/object:Gem::Version
|
@@ -30,20 +28,22 @@ dependencies:
|
|
30
28
|
- - <
|
31
29
|
- !ruby/object:Gem::Version
|
32
30
|
version: 2.0.0
|
31
|
+
prerelease: false
|
32
|
+
type: :runtime
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
|
34
|
+
name: logstash-devutils
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
36
|
requirements:
|
36
37
|
- - '>='
|
37
38
|
- !ruby/object:Gem::Version
|
38
39
|
version: '0'
|
39
|
-
|
40
|
-
prerelease: false
|
41
|
-
type: :development
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
43
41
|
requirements:
|
44
42
|
- - '>='
|
45
43
|
- !ruby/object:Gem::Version
|
46
44
|
version: '0'
|
45
|
+
prerelease: false
|
46
|
+
type: :development
|
47
47
|
description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
|
48
48
|
email: info@elasticsearch.com
|
49
49
|
executables: []
|