logstash-filter-kv 4.6.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2127186e4a039aaadb013f982c1ed9815827b4c629979a9572a2000a961f3fb1
4
- data.tar.gz: e79ab76e7787bb89b4aa0e901a78bc0412c3e9344ff6ac7ac23554b56f8f526b
3
+ metadata.gz: da90e7e03c6cb4960a1c224d216f03ee985b6f1b320832b265b4abd112ac5ade
4
+ data.tar.gz: a4f50d4707f2a3c74cd917e8f86b1acc53e974b56e967953009c6b1f6d241ec3
5
5
  SHA512:
6
- metadata.gz: 237975f6ce46e4d5e5ac94742ea4b7adc323691d22a670ea37d9ff68f111523ca0f5b6dd3f81bf8c5dd60a60b6dafd11d579e5c4fcfc383c356a43b72f8e277d
7
- data.tar.gz: bc354d05d413b8781e0baf3076521cd6257baaa49a84650b3182fd076aa91b962558d247d9a8b55ee8485427ccc74e33e0505f97ca38b784b8b3c00333ea926b
6
+ metadata.gz: 6b2f78f389c0ae6d43132aff4fce9ff868dd044a220cd9aeaf69c5015d05c0a200be2c6fdc0df9876c4395912e8ff32ee2649e464a2d2d7dc70274243994f08e
7
+ data.tar.gz: 855fb4feebcb15be71505bef3ca4920b60d2e06c1adfd3ae646dc2caf5c95ac69609a6a7cc52ab327bcfce29f92cace5e47612b6a8af542016f468657a007b17
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 4.7.0
2
+ - Allow attaching multiple tags on failure. The `tag_on_failure` option now also supports an array of strings [#92](https://github.com/logstash-plugins/logstash-filter-kv/issues/92)
3
+
1
4
  ## 4.6.0
2
5
  - Added `allow_empty_values` option [#72](https://github.com/logstash-plugins/logstash-filter-kv/pull/72)
3
6
 
data/docs/index.asciidoc CHANGED
@@ -74,7 +74,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
74
74
  | <<plugins-{type}s-{plugin}-remove_char_value>> |<<string,string>>|No
75
75
  | <<plugins-{type}s-{plugin}-source>> |<<string,string>>|No
76
76
  | <<plugins-{type}s-{plugin}-target>> |<<string,string>>|No
77
- | <<plugins-{type}s-{plugin}-tag_on_failure>> |<<string,string>>|No
77
+ | <<plugins-{type}s-{plugin}-tag_on_failure>> |<<array,array>>|No
78
78
  | <<plugins-{type}s-{plugin}-tag_on_timeout>> |<<string,string>>|No
79
79
  | <<plugins-{type}s-{plugin}-timeout_millis>> |<<number,number>>|No
80
80
  | <<plugins-{type}s-{plugin}-transform_key>> |<<string,string>>, one of `["lowercase", "uppercase", "capitalize"]`|No
@@ -372,12 +372,12 @@ For example, to place all keys into the event field kv:
372
372
  [id="plugins-{type}s-{plugin}-tag_on_failure"]
373
373
  ===== `tag_on_failure`
374
374
 
375
- * Value type is <<string,string>>
376
- * The default value for this setting is `_kv_filter_error`.
375
+ * Value type is <<array,array>>
376
+ * The default value for this setting is [`_kv_filter_error`].
377
377
 
378
378
  When a kv operation causes a runtime exception to be thrown within the plugin,
379
379
  the operation is safely aborted without crashing the plugin, and the event is
380
- tagged with the provided value.
380
+ tagged with the provided values.
381
381
 
382
382
  [id="plugins-{type}s-{plugin}-tag_on_timeout"]
383
383
  ===== `tag_on_timeout`
@@ -67,7 +67,7 @@ class LogStash::Filters::KV < LogStash::Filters::Base
67
67
  # These characters form a regex character class and thus you must escape special regex
68
68
  # characters like `[` or `]` using `\`.
69
69
  #
70
- # Only leading and trailing characters are trimed from the key.
70
+ # Only leading and trailing characters are trimmed from the key.
71
71
  #
72
72
  # For example, to trim `<` `>` `[` `]` and `,` characters from keys:
73
73
  # [source,ruby]
@@ -338,7 +338,7 @@ class LogStash::Filters::KV < LogStash::Filters::Base
338
338
  config :tag_on_timeout, :validate => :string, :default => '_kv_filter_timeout'
339
339
 
340
340
  # Tag to apply if kv errors
341
- config :tag_on_failure, :validate => :string, :default => '_kv_filter_error'
341
+ config :tag_on_failure, :validate => :array, :default => ['_kv_filter_error']
342
342
 
343
343
 
344
344
  EMPTY_STRING = ''.freeze
@@ -425,8 +425,8 @@ class LogStash::Filters::KV < LogStash::Filters::Base
425
425
 
426
426
  @logger.debug? && @logger.debug("KV scan regex", :regex => @scan_re.inspect)
427
427
 
428
- # divide by float to allow fractionnal seconds, the Timeout class timeout value is in seconds but the underlying
429
- # executor resolution is in microseconds so fractionnal second parameter down to microseconds is possible.
428
+ # divide by float to allow fractional seconds, the Timeout class timeout value is in seconds but the underlying
429
+ # executor resolution is in microseconds so fractional second parameter down to microseconds is possible.
430
430
  # see https://github.com/jruby/jruby/blob/9.2.7.0/core/src/main/java/org/jruby/ext/timeout/Timeout.java#L125
431
431
  @timeout_seconds = @timeout_millis / 1000.0
432
432
  end
@@ -460,7 +460,7 @@ class LogStash::Filters::KV < LogStash::Filters::Base
460
460
  meta = { :exception => ex.message }
461
461
  meta[:backtrace] = ex.backtrace if logger.debug?
462
462
  logger.warn('Exception while parsing KV', meta)
463
- event.tag(@tag_on_failure)
463
+ @tag_on_failure.each { |tag| event.tag(tag) }
464
464
  end
465
465
 
466
466
  def close
@@ -500,9 +500,9 @@ class LogStash::Filters::KV < LogStash::Filters::Base
500
500
 
501
501
  value = value.to_s
502
502
 
503
- value.bytesize < 255 ? "`#{value}`" : "entry too large; first 255 chars are `#{value[0..255].dump}`"
503
+ value.bytesize < 255 ? "`#{value.dump}`" : "(entry too large to show; showing first 255 characters) `#{value[0..255].dump}`[...]"
504
504
  end
505
-
505
+
506
506
  def has_value_splitter?(s)
507
507
  s =~ @value_split_re
508
508
  end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-kv'
4
- s.version = '4.6.0'
4
+ s.version = '4.7.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Parses key-value pairs"
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/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -460,7 +460,6 @@ describe LogStash::Filters::KV do
460
460
  end
461
461
  end
462
462
 
463
-
464
463
  describe "test data from specific sub source" do
465
464
  config <<-CONFIG
466
465
  filter {
@@ -519,7 +518,6 @@ describe LogStash::Filters::KV do
519
518
  end
520
519
  end
521
520
 
522
-
523
521
  describe "test data from specific sub source and target" do
524
522
  config <<-CONFIG
525
523
  filter {
@@ -1059,7 +1057,6 @@ describe "multi character splitting" do
1059
1057
  it_behaves_like "parsing all fields and values"
1060
1058
  end
1061
1059
 
1062
-
1063
1060
  context "example from @guyboertje in #15" do
1064
1061
  let(:message) { 'key1: val1; key2: val2; key3: https://site/?g={......"...; CLR rv:11.0)"..}; key4: val4;' }
1065
1062
  let(:options) {
@@ -1152,6 +1149,17 @@ context 'runtime errors' do
1152
1149
  plugin.filter(event)
1153
1150
  expect(event.get('tags')).to_not be_nil
1154
1151
  expect(event.get('tags')).to include('KV-ERROR')
1152
+ expect(event.get('tags')).to_not include('_kv_filter_error')
1153
+ end
1154
+ end
1155
+ context 'when multiple custom tags are defined' do
1156
+ let(:options) { super().merge("tag_on_failure" => ["kv_FAIL_one", "_kv_fail_TWO"])}
1157
+ it 'tags the event with the custom tag' do
1158
+ plugin.filter(event)
1159
+ expect(event.get('tags')).to_not be_nil
1160
+ expect(event.get('tags')).to include('kv_FAIL_one')
1161
+ expect(event.get('tags')).to include('_kv_fail_TWO')
1162
+ expect(event.get('tags')).to_not include('_kv_filter_error')
1155
1163
  end
1156
1164
  end
1157
1165
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-kv
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-31 00:00:00.000000000 Z
11
+ date: 2022-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement