logstash-filter-multiline 2.0.2 → 2.0.3

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: 421058bb148d4448d258022947b4c60e8cde43b9
4
- data.tar.gz: dee48e16048f5a4217e4ac15b52a7b419de20381
3
+ metadata.gz: ead8a90af4e5b01350f6479e27f3a7edf4d910d1
4
+ data.tar.gz: f62946a7113fb0471d2c747c2f4b4d777b7d75f5
5
5
  SHA512:
6
- metadata.gz: 1820d1fdd2ca40f2b6ba08c548e41ca103daa3e91321fa157634c2190eeed146af1c81b4ac69071e415258beb3fec98f91c689c5342a18d286395d935a3ed411
7
- data.tar.gz: 87255ed12812fb79c9ddd38275b3d9a09cc9ec8f081fc966a815a84ff36356a404bafb46a58684b4b34996d0a6d2dd3831244597ae8e581fcbd3dec920857b84
6
+ metadata.gz: ecdc4ef014eab0fbf8d6572f89cafe4336184aa27fbf60ea205d79aca5ac14763b23fb08ff1dc9b52736577a66a6281e0755cba6b31afedde3b6745b33f1f12b
7
+ data.tar.gz: 889e41d684d1dd55a15ba7205a13f2b4a27264b79cd6d05ea829001ad4e9a1485a6589e3aefa57d7683808b9d2090b1cc70dc6f4bb25385370e2e78c58b83bb8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,5 @@
1
+ ## 2.0.3
2
+ - Fix metadata handling, fixes #19 and #22
1
3
  ## 2.0.0
2
4
  - Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
3
5
  instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
data/README.md CHANGED
@@ -1,5 +1,8 @@
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/)
5
+
3
6
  This is a plugin for [Logstash](https://github.com/elastic/logstash).
4
7
 
5
8
  It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way.
@@ -228,8 +228,10 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
228
228
  # this line is not part of the previous event if we have a pending event, it's done, send it.
229
229
  # put the current event into pending
230
230
  unless pending.empty?
231
- tmp = event.to_hash
232
- event.overwrite(merge(pending))
231
+ tmp = event.to_hash_with_metadata
232
+ merged_events = merge(pending)
233
+ event.overwrite(merged_events)
234
+ event["@metadata"] = merged_events["@metadata"] # Override does not copy the metadata
233
235
  pending.clear # avoid array creation
234
236
  pending << LogStash::Event.new(tmp)
235
237
  else
@@ -253,7 +255,9 @@ class LogStash::Filters::Multiline < LogStash::Filters::Base
253
255
  # if we have something in pending, join it with this message and send it.
254
256
  # otherwise, this is a new message and not part of multiline, send it.
255
257
  unless pending.empty?
256
- event.overwrite(merge(pending << event))
258
+ merged_events = merge(pending << event)
259
+ event.overwrite(merged_events)
260
+ event["@metadata"] = merged_events["@metadata"] # Override does not copy the metadata
257
261
  pending.clear
258
262
  end
259
263
  end # if match
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-multiline'
4
- s.version = '2.0.2'
4
+ s.version = '2.0.3'
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
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"
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  # Gem dependencies
23
23
  s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
24
24
  s.add_runtime_dependency 'logstash-patterns-core'
25
- s.add_runtime_dependency 'logstash-filter-mutate'
25
+ s.add_development_dependency 'logstash-filter-mutate'
26
26
  s.add_runtime_dependency 'jls-grok', '~> 0.11.0'
27
27
 
28
28
  s.add_development_dependency 'logstash-devutils'
@@ -245,4 +245,47 @@ describe LogStash::Filters::Multiline do
245
245
  end
246
246
  end
247
247
 
248
+
249
+ describe "keeps metadata fields after two consecutive non multline lines" do
250
+ config <<-CONFIG
251
+ filter {
252
+ mutate { add_field => { "[@metadata][index]" => "logstash-2015.11.19" } }
253
+ multiline {
254
+ pattern => "^%{NUMBER}"
255
+ what => "previous"
256
+ }
257
+ mutate { add_field => { "[@metadata][type]" => "foo" } }
258
+ }
259
+ CONFIG
260
+
261
+ sample ["line1", "line2"] do
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")
267
+ end
268
+ end
269
+
270
+ describe "keeps metadata fields after two consecutive non multline lines" do
271
+ config <<-CONFIG
272
+ filter {
273
+ mutate { add_field => { "[@metadata][index]" => "logstash-2015.11.19" } }
274
+ multiline {
275
+ pattern => "^%{NUMBER}"
276
+ what => "next"
277
+ }
278
+ mutate { add_field => { "[@metadata][type]" => "foo" } }
279
+ }
280
+ CONFIG
281
+
282
+ sample ["line1", "line2"] do
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")
288
+ end
289
+ end
290
+
248
291
  end
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-multiline
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-14 00:00:00.000000000 Z
11
+ date: 2015-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: logstash-core
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: 3.0.0
22
- name: logstash-core
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,62 +28,64 @@ dependencies:
30
28
  - - <
31
29
  - !ruby/object:Gem::Version
32
30
  version: 3.0.0
31
+ prerelease: false
32
+ type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ name: logstash-patterns-core
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - '>='
37
43
  - !ruby/object:Gem::Version
38
44
  version: '0'
39
- name: logstash-patterns-core
40
45
  prerelease: false
41
46
  type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: logstash-filter-mutate
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - '>='
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0'
53
- name: logstash-filter-mutate
54
59
  prerelease: false
55
- type: :runtime
60
+ type: :development
61
+ - !ruby/object:Gem::Dependency
62
+ name: jls-grok
56
63
  version_requirements: !ruby/object:Gem::Requirement
57
64
  requirements:
58
- - - '>='
65
+ - - ~>
59
66
  - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
67
+ version: 0.11.0
62
68
  requirement: !ruby/object:Gem::Requirement
63
69
  requirements:
64
70
  - - ~>
65
71
  - !ruby/object:Gem::Version
66
72
  version: 0.11.0
67
- name: jls-grok
68
73
  prerelease: false
69
74
  type: :runtime
75
+ - !ruby/object:Gem::Dependency
76
+ name: logstash-devutils
70
77
  version_requirements: !ruby/object:Gem::Requirement
71
78
  requirements:
72
- - - ~>
79
+ - - '>='
73
80
  - !ruby/object:Gem::Version
74
- version: 0.11.0
75
- - !ruby/object:Gem::Dependency
81
+ version: '0'
76
82
  requirement: !ruby/object:Gem::Requirement
77
83
  requirements:
78
84
  - - '>='
79
85
  - !ruby/object:Gem::Version
80
86
  version: '0'
81
- name: logstash-devutils
82
87
  prerelease: false
83
88
  type: :development
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
89
  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
90
90
  email: info@elastic.co
91
91
  executables: []