logstash-filter-json 3.0.1 → 3.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21c3986274848a665933e6c3f2a32046b9e9c23e
4
- data.tar.gz: f013b87add842f4245230e364c8f1fe5ecf2c49b
3
+ metadata.gz: 75b6415ca4f107d636b1305a1cfa50f5fe6116a5
4
+ data.tar.gz: 4b1adb7d1a1b8c24fc464dfcdd055b4d0372115c
5
5
  SHA512:
6
- metadata.gz: c2c3f0c30346606a5ec260ce250f25691b93686ef1000bade64b0304c04c6d67763471263e73153987dc8fee3efcb26133fb213b124183609c87fa7ac53dc694
7
- data.tar.gz: 759dc98379f42d47bbe60cbbd7e91761bb7d9e46075740e732a4620ac977e8c441e3fb18217461f151be2fbd97c9d0f833d205b89c7dbed713291ef19069b584
6
+ metadata.gz: 9c4057279fe3c6911553fc383883bc41deaccaee6f3cad0f56298d451d2bcb870176aa9ea0cf24c81c98acf1b4b11b675803444d9a419e41fe80baa907472fae
7
+ data.tar.gz: aa96a6fd9b490b9967f62ef022ae380af6edd232a850f164496d81c41067623a5508c5b6fe6c3b00f3c35985c07aedc8c88d3e86e58896cbff54fc4e271c1a49
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 3.0.2
2
+ - Relax constraint on logstash-core-plugin-api to >= 1.60 <= 2.99
3
+
1
4
  ## 3.0.1
2
5
  - Republish all the gems under jruby.
3
6
  ## 3.0.0
@@ -59,6 +59,9 @@ class LogStash::Filters::Json < LogStash::Filters::Base
59
59
  # successful match
60
60
  config :tag_on_failure, :validate => :array, :default => ["_jsonparsefailure"]
61
61
 
62
+ # Allow to skip filter on invalid json (allows to handle json and non-json data without warnings)
63
+ config :skip_on_invalid_json, :validate => :boolean, :default => false
64
+
62
65
  def register
63
66
  # Nothing to do here
64
67
  end
@@ -72,8 +75,10 @@ class LogStash::Filters::Json < LogStash::Filters::Base
72
75
  begin
73
76
  parsed = LogStash::Json.load(source)
74
77
  rescue => e
75
- @tag_on_failure.each{|tag| event.tag(tag)}
76
- @logger.warn("Error parsing json", :source => @source, :raw => source, :exception => e)
78
+ unless @skip_on_invalid_json
79
+ @tag_on_failure.each{|tag| event.tag(tag)}
80
+ @logger.warn("Error parsing json", :source => @source, :raw => source, :exception => e)
81
+ end
77
82
  return
78
83
  end
79
84
 
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-json'
4
- s.version = '3.0.1'
4
+ s.version = '3.0.2'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This is a JSON parsing filter. It takes an existing field which contains JSON and expands it into an actual data structure within the Logstash event."
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"
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
21
21
 
22
22
  # Gem dependencies
23
- s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
23
+ s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
24
24
 
25
25
  s.add_development_dependency 'logstash-devutils'
26
26
  end
@@ -175,4 +175,51 @@ describe LogStash::Filters::Json do
175
175
  end
176
176
  end
177
177
  end
178
+
179
+ describe "parse mixture of json an non-json content (skip_on_invalid_json)" do
180
+ subject(:filter) { LogStash::Filters::Json.new(config) }
181
+
182
+ let(:config) { {"source" => "message", "remove_field" => ["message"], "skip_on_invalid_json" => skip_on_invalid_json} }
183
+ let(:event) { LogStash::Event.new("message" => message) }
184
+
185
+ before(:each) do
186
+ allow(filter.logger).to receive(:warn)
187
+ filter.register
188
+ filter.filter(event)
189
+ end
190
+
191
+ let(:message) { "this is not a json message" }
192
+
193
+ context "with `skip_on_invalid_json` set to false" do
194
+ let(:skip_on_invalid_json) { false }
195
+
196
+ it "sends a warning to the logger" do
197
+ expect(filter.logger).to have_received(:warn).with("Error parsing json", anything())
198
+ end
199
+
200
+ it "keeps the source field" do
201
+ expect(event.get("message")).to eq message
202
+ end
203
+
204
+ it "adds a parse-error tag" do
205
+ expect(event.get("tags")).to eq ["_jsonparsefailure"]
206
+ end
207
+ end
208
+
209
+ context "with `skip_on_invalid_json` set to true" do
210
+ let(:skip_on_invalid_json) { true }
211
+
212
+ it "sends no warning" do
213
+ expect(filter.logger).to_not have_received(:warn)
214
+ end
215
+
216
+ it "keeps the source field" do
217
+ expect(event.get("message")).to eq message
218
+ end
219
+
220
+ it "does not add a parse-error tag" do
221
+ expect(event.get("tags")).to be_nil
222
+ end
223
+ end
224
+ end
178
225
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-09 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.60'
19
+ - - "<="
17
20
  - !ruby/object:Gem::Version
18
- version: '2.0'
21
+ version: '2.99'
19
22
  name: logstash-core-plugin-api
20
23
  prerelease: false
21
24
  type: :runtime
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.60'
30
+ - - "<="
25
31
  - !ruby/object:Gem::Version
26
- version: '2.0'
32
+ version: '2.99'
27
33
  - !ruby/object:Gem::Dependency
28
34
  requirement: !ruby/object:Gem::Requirement
29
35
  requirements:
@@ -75,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
81
  version: '0'
76
82
  requirements: []
77
83
  rubyforge_project:
78
- rubygems_version: 2.4.8
84
+ rubygems_version: 2.6.3
79
85
  signing_key:
80
86
  specification_version: 4
81
87
  summary: This is a JSON parsing filter. It takes an existing field which contains JSON and expands it into an actual data structure within the Logstash event.