logstash-filter-multiline 2.0.5 → 3.0.0

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: 4d3942a224915ed389c4721e9ee08e19fb003c9c
4
- data.tar.gz: d7de154ee6524ac0596637dcc42f1ed8e02d175c
3
+ metadata.gz: ed2f76cf601f2f8f263288c27f38e52f2b5ec28f
4
+ data.tar.gz: 5d4a58a07ad04120b05d337215edc6210cdf3308
5
5
  SHA512:
6
- metadata.gz: edc3b6d50f2ad70bd17f9e10ee67dbd3a74a2c9d4a0340b47226bf32f464abe6dbaa1e6b630e642191702cd07c775fe8dc8023ac02ba43e5f5b2004c0949b30d
7
- data.tar.gz: a476b6e57bc1ee2085f5a85b90158bf4855d5059ad47ea6a50324f67d02ba7ed7561504cd6e2f53b7393acade5a6d781bb4dea892bde7e065712d0359791569d
6
+ metadata.gz: 38995d4ec870df55106bc52230e16eeb3d08f213e6961e7fed0c7cac0a449560e061e8a7b8bb6284ea04b7cb1e9c18b3178a5a555d5961adf310ac17cd974dd9
7
+ data.tar.gz: e681f7c127697c711032a208f835a0262ec325990943faa3650b9d5501b2e0fc21ba6ca619ee34b297732ba893e6331951efb03658232ca50495d3f031ea21a2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ ## 3.0.0
2
+ - Update the plugin to the version 2.0 of the plugin api, this change is required for Logstash 5.0 compatibility. See https://github.com/elastic/logstash/issues/5141
1
3
  # 2.0.5
2
4
  - Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
3
5
  # 2.0.4
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
1
  source 'https://rubygems.org'
2
- gemspec
2
+
3
+ # Specify your gem's dependencies in logstash-mass_effect.gemspec
4
+ gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012–2015 Elasticsearch <http://www.elastic.co>
1
+ Copyright (c) 2012–2016 Elasticsearch <http://www.elastic.co>
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Logstash Plugin
2
2
 
3
- [![Build
4
- Status](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Filters/job/logstash-plugin-filter-multiline-unit/badge/icon)](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Filters/job/logstash-plugin-filter-multiline-unit/)
3
+ [![Travis Build Status](https://travis-ci.org/logstash-plugins/logstash-filter-multiline.svg)](https://travis-ci.org/logstash-plugins/logstash-filter-multiline)
5
4
 
6
5
  This is a plugin for [Logstash](https://github.com/elastic/logstash).
7
6
 
@@ -56,7 +55,12 @@ gem "logstash-filter-awesome", :path => "/your/local/logstash-filter-awesome"
56
55
  ```
57
56
  - Install plugin
58
57
  ```sh
58
+ # Logstash 2.3 and higher
59
+ bin/logstash-plugin install --no-verify
60
+
61
+ # Prior to Logstash 2.3
59
62
  bin/plugin install --no-verify
63
+
60
64
  ```
61
65
  - Run Logstash with your plugin
62
66
  ```sh
@@ -74,7 +78,12 @@ gem build logstash-filter-awesome.gemspec
74
78
  ```
75
79
  - Install the plugin from the Logstash home
76
80
  ```sh
77
- bin/plugin install /your/local/plugin/logstash-filter-awesome.gem
81
+ # Logstash 2.3 and higher
82
+ bin/logstash-plugin install --no-verify
83
+
84
+ # Prior to Logstash 2.3
85
+ bin/plugin install --no-verify
86
+
78
87
  ```
79
88
  - Start Logstash and proceed to test the plugin
80
89
 
@@ -165,12 +165,10 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
165
165
 
166
166
  public
167
167
  def filter(event)
168
-
169
-
170
- match = event[@source].is_a?(Array) ? @grok.match(event[@source].first) : @grok.match(event[@source])
168
+ match = event.get(@source).is_a?(Array) ? @grok.match(event.get(@source).first) : @grok.match(event.get(@source))
171
169
  match = (match && !@negate) || (!match && @negate) # add negate option
172
170
 
173
- @logger.debug? && @logger.debug("Multiline", :pattern => @pattern, :message => event[@source], :match => match, :negate => @negate)
171
+ @logger.debug? && @logger.debug("Multiline", :pattern => @pattern, :message => event.get(@source), :match => match, :negate => @negate)
174
172
 
175
173
  multiline_filter!(event, match)
176
174
 
@@ -192,7 +190,7 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
192
190
  # if :final flush then select all events
193
191
  expired = @pending.inject({}) do |result, (key, events)|
194
192
  unless events.empty?
195
- age = Time.now - events.first["@timestamp"].time
193
+ age = Time.now - events.first.get("@timestamp").time
196
194
  result[key] = events if (age >= @max_age) || options[:final]
197
195
  end
198
196
  result
@@ -231,7 +229,7 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
231
229
  tmp = event.to_hash_with_metadata
232
230
  merged_events = merge(pending)
233
231
  event.overwrite(merged_events)
234
- event["@metadata"] = merged_events["@metadata"] # Override does not copy the metadata
232
+ event.set("@metadata", merged_events.get("@metadata")) # Override does not copy the metadata
235
233
  pending.clear # avoid array creation
236
234
  pending << LogStash::Event.new(tmp)
237
235
  else
@@ -257,7 +255,7 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
257
255
  unless pending.empty?
258
256
  merged_events = merge(pending << event)
259
257
  event.overwrite(merged_events)
260
- event["@metadata"] = merged_events["@metadata"] # Override does not copy the metadata
258
+ event.set("@metadata", merged_events.get("@metadata")) # Override does not copy the metadata
261
259
  pending.clear
262
260
  end
263
261
  end # if match
@@ -1,10 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-multiline'
4
- s.version = '2.0.5'
4
+ s.version = '3.0.0'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "This filter will collapse multiline messages from a single source into one Logstash event."
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"
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"
8
8
  s.authors = ["Elastic"]
9
9
  s.email = 'info@elastic.co'
10
10
  s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
@@ -20,11 +20,11 @@ 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", "~> 1.0"
23
+ s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
24
24
  s.add_runtime_dependency 'logstash-patterns-core'
25
- s.add_development_dependency 'logstash-filter-mutate'
26
25
  s.add_runtime_dependency 'jls-grok', '~> 0.11.0'
27
26
 
27
+ s.add_development_dependency 'logstash-filter-mutate'
28
28
  s.add_development_dependency 'logstash-devutils'
29
29
  end
30
30
 
@@ -19,8 +19,8 @@ describe LogStash::Filters::Multiline do
19
19
  sample [ "hello world", " second line", "another first line" ] do
20
20
  expect(subject).to be_a(Array)
21
21
  insist { subject.size } == 2
22
- insist { subject[0]["message"] } == "hello world\n second line"
23
- insist { subject[1]["message"] } == "another first line"
22
+ insist { subject[0].get("message") } == "hello world\n second line"
23
+ insist { subject[1].get("message") } == "another first line"
24
24
  end
25
25
  end
26
26
 
@@ -36,7 +36,7 @@ describe LogStash::Filters::Multiline do
36
36
  CONFIG
37
37
 
38
38
  sample [ "120913 12:04:33 first line", "second line", "third line" ] do
39
- insist { subject["message"] } == "120913 12:04:33 first line\nsecond line\nthird line"
39
+ insist { subject.get("message") } == "120913 12:04:33 first line\nsecond line\nthird line"
40
40
  end
41
41
  end
42
42
 
@@ -79,10 +79,10 @@ describe LogStash::Filters::Multiline do
79
79
  insist { subject.size } == count
80
80
 
81
81
  subject.each_with_index do |event, i|
82
- insist { event["type"] == event["host"] } == true
83
- stream = event["type"]
84
- insist { event["message"].split("\n").first } =~ /hello world /
85
- insist { event["message"].scan(/stream\d/).all?{|word| word == stream} } == true
82
+ insist { event.get("type") == event.get("host") } == true
83
+ stream = event.get("type")
84
+ insist { event.get("message").split("\n").first } =~ /hello world /
85
+ insist { event.get("message").scan(/stream\d/).all?{|word| word == stream} } == true
86
86
  end
87
87
  end
88
88
  end
@@ -109,8 +109,8 @@ describe LogStash::Filters::Multiline do
109
109
  insist { subject.size } == 2
110
110
 
111
111
  subject.each do |s|
112
- insist { s["tags"].include?("nope") } == true
113
- insist { s["tags"].include?("dummy") } == false
112
+ insist { s.get("tags").include?("nope") } == true
113
+ insist { s.get("tags").include?("dummy") } == false
114
114
  insist { s.include?("dummy2") } == true
115
115
  end
116
116
  end
@@ -128,7 +128,7 @@ describe LogStash::Filters::Multiline do
128
128
 
129
129
  sample [ " match", "nomatch" ] do
130
130
  expect(subject).to be_a(LogStash::Event)
131
- insist { subject["message"] } == " match\nnomatch"
131
+ insist { subject.get("message") } == " match\nnomatch"
132
132
  end
133
133
  end
134
134
 
@@ -145,8 +145,8 @@ describe LogStash::Filters::Multiline do
145
145
  sample [" match1", "nomatch1", " match2", "nomatch2"] do
146
146
  expect(subject).to be_a(Array)
147
147
  insist { subject.size } == 2
148
- insist { subject[0]["message"] } == " match1\nnomatch1"
149
- insist { subject[1]["message"] } == " match2\nnomatch2"
148
+ insist { subject[0].get("message") } == " match1\nnomatch1"
149
+ insist { subject[1].get("message") } == " match2\nnomatch2"
150
150
  end
151
151
  end
152
152
 
@@ -163,8 +163,8 @@ describe LogStash::Filters::Multiline do
163
163
  sample [" match1", " match1", "nomatch1", " 1match2", " 2match2", " 1match2", "nomatch2"] do
164
164
  expect(subject).to be_a(Array)
165
165
  insist { subject.size } == 2
166
- insist { subject[0]["message"] } == " match1\n match1\nnomatch1"
167
- insist { subject[1]["message"] } == " 1match2\n 2match2\n 1match2\nnomatch2"
166
+ insist { subject[0].get("message") } == " match1\n match1\nnomatch1"
167
+ insist { subject[1].get("message") } == " 1match2\n 2match2\n 1match2\nnomatch2"
168
168
  end
169
169
  end
170
170
 
@@ -182,8 +182,8 @@ describe LogStash::Filters::Multiline do
182
182
  sample [" match1", " match1", "nomatch1", " 1match2", " 2match2", " 1match2", "nomatch2"] do
183
183
  expect(subject).to be_a(Array)
184
184
  insist { subject.size } == 2
185
- insist { subject[0]["message"] } == " match1\nnomatch1"
186
- insist { subject[1]["message"] } == " 1match2\n 2match2\nnomatch2"
185
+ insist { subject[0].get("message") } == " match1\nnomatch1"
186
+ insist { subject[1].get("message") } == " 1match2\n 2match2\nnomatch2"
187
187
  end
188
188
  end
189
189
 
@@ -209,9 +209,9 @@ describe LogStash::Filters::Multiline do
209
209
  ] do
210
210
  expect(subject).to be_a(Array)
211
211
  insist { subject.size } == 2
212
- insist { subject[0]["foo"] } == " match1\n match1\nnomatch1"
213
- insist { subject[0]["message"] } == ["bar", "baz"]
214
- insist { subject[1]["foo"] } == " 1match2\n 2match2\n 1match2\nnomatch2"
212
+ insist { subject[0].get("foo") } == " match1\n match1\nnomatch1"
213
+ insist { subject[0].get("message") } == ["bar", "baz"]
214
+ insist { subject[1].get("foo") } == " 1match2\n 2match2\n 1match2\nnomatch2"
215
215
  end
216
216
  end
217
217
 
@@ -241,7 +241,7 @@ describe LogStash::Filters::Multiline do
241
241
  sample messages do
242
242
  expect(subject).to be_a(Array)
243
243
  insist { subject.size } == 2
244
- insist { subject[0]["message"] } == messages[0..-2].join("\n")
244
+ insist { subject[0].get("message") } == messages[0..-2].join("\n")
245
245
  end
246
246
  end
247
247
 
@@ -260,10 +260,10 @@ describe LogStash::Filters::Multiline do
260
260
 
261
261
  sample ["line1", "line2"] do
262
262
  expect(subject).to be_a(Array)
263
- expect(subject[0]["@metadata"]).to include("index"=>"logstash-2015.11.19")
264
- expect(subject[1]["@metadata"]).to include("index"=>"logstash-2015.11.19")
265
- expect(subject[0]["@metadata"]).to include("type"=>"foo")
266
- expect(subject[1]["@metadata"]).to include("type"=>"foo")
263
+ expect(subject[0].get("@metadata")).to include("index"=>"logstash-2015.11.19")
264
+ expect(subject[1].get("@metadata")).to include("index"=>"logstash-2015.11.19")
265
+ expect(subject[0].get("@metadata")).to include("type"=>"foo")
266
+ expect(subject[1].get("@metadata")).to include("type"=>"foo")
267
267
  end
268
268
  end
269
269
 
@@ -281,10 +281,10 @@ describe LogStash::Filters::Multiline do
281
281
 
282
282
  sample ["line1", "line2"] do
283
283
  expect(subject).to be_a(Array)
284
- expect(subject[0]["@metadata"]).to include("index"=>"logstash-2015.11.19")
285
- expect(subject[1]["@metadata"]).to include("index"=>"logstash-2015.11.19")
286
- expect(subject[0]["@metadata"]).to include("type"=>"foo")
287
- expect(subject[1]["@metadata"]).to include("type"=>"foo")
284
+ expect(subject[0].get("@metadata")).to include("index"=>"logstash-2015.11.19")
285
+ expect(subject[1].get("@metadata")).to include("index"=>"logstash-2015.11.19")
286
+ expect(subject[0].get("@metadata")).to include("type"=>"foo")
287
+ expect(subject[1].get("@metadata")).to include("type"=>"foo")
288
288
  end
289
289
  end
290
290
 
metadata CHANGED
@@ -1,86 +1,88 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-multiline
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2016-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: logstash-core-plugin-api
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
- version: '1.0'
19
- name: logstash-core-plugin-api
20
- prerelease: false
19
+ version: '2.0'
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: logstash-patterns-core
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
- name: logstash-patterns-core
34
- prerelease: false
35
34
  type: :runtime
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: jls-grok
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
- - - ">="
45
+ - - "~>"
45
46
  - !ruby/object:Gem::Version
46
- version: '0'
47
- name: logstash-filter-mutate
47
+ version: 0.11.0
48
+ type: :runtime
48
49
  prerelease: false
49
- type: :development
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.11.0
55
55
  - !ruby/object:Gem::Dependency
56
+ name: logstash-filter-mutate
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
- - - "~>"
59
+ - - ">="
59
60
  - !ruby/object:Gem::Version
60
- version: 0.11.0
61
- name: jls-grok
61
+ version: '0'
62
+ type: :development
62
63
  prerelease: false
63
- type: :runtime
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 0.11.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
+ name: logstash-devutils
70
71
  requirement: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - ">="
73
74
  - !ruby/object:Gem::Version
74
75
  version: '0'
75
- name: logstash-devutils
76
- prerelease: false
77
76
  type: :development
77
+ prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- 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
83
+ description: This gem is a Logstash plugin required to be installed on top of the
84
+ Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This
85
+ gem is not a stand-alone program
84
86
  email: info@elastic.co
85
87
  executables: []
86
88
  extensions: []
@@ -101,7 +103,7 @@ licenses:
101
103
  metadata:
102
104
  logstash_plugin: 'true'
103
105
  logstash_group: filter
104
- post_install_message:
106
+ post_install_message:
105
107
  rdoc_options: []
106
108
  require_paths:
107
109
  - lib
@@ -116,10 +118,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
118
  - !ruby/object:Gem::Version
117
119
  version: '0'
118
120
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.4.8
121
- signing_key:
121
+ rubyforge_project:
122
+ rubygems_version: 2.5.1
123
+ signing_key:
122
124
  specification_version: 4
123
- summary: This filter will collapse multiline messages from a single source into one Logstash event.
125
+ summary: This filter will collapse multiline messages from a single source into one
126
+ Logstash event.
124
127
  test_files:
125
128
  - spec/filters/multiline_spec.rb