logstash-filter-json 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/logstash/filters/json.rb +10 -16
- data/logstash-filter-json.gemspec +1 -1
- data/spec/filters/json_spec.rb +26 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27170e93f03822ec0da6420f92abea14b28301d4
|
4
|
+
data.tar.gz: 4486725015297d1aef4f49a1237a93e9754f9498
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6def29af5bc608eff94091b35d28b6bd5070d9cec25a71aad9968b0ae3c4c62c65c639e538572dfa6b8e6aea2664ba0c00f10894acd34b8a7e97ef2b03ef380d
|
7
|
+
data.tar.gz: 35044d9e29c8136bdd73cb8a3d8edf5b1a6d91f3ef3041967b2abf0e367fa6364eb1c87630b0a2488bbf6624a4d1ea5ead03f4a54c82ed27ca40a946f49dc71a
|
@@ -62,24 +62,18 @@ class LogStash::Filters::Json < LogStash::Filters::Base
|
|
62
62
|
# TODO(colin) this field merging stuff below should be handled in Event.
|
63
63
|
|
64
64
|
source = event[@source]
|
65
|
-
if @target.nil?
|
66
|
-
# Default is to write to the root of the event.
|
67
|
-
dest = event.to_hash
|
68
|
-
else
|
69
|
-
if @target == @source
|
70
|
-
# Overwrite source
|
71
|
-
dest = event[@target] = {}
|
72
|
-
else
|
73
|
-
dest = event[@target] ||= {}
|
74
|
-
end
|
75
|
-
end
|
76
65
|
|
77
66
|
begin
|
78
|
-
|
79
|
-
#
|
80
|
-
#
|
81
|
-
|
82
|
-
|
67
|
+
parsed = LogStash::Json.load(source)
|
68
|
+
# If your parsed JSON is an array, we can't merge, so you must specify a
|
69
|
+
# destination to store the JSON, so you will get an exception about
|
70
|
+
if parsed.kind_of?(Array) && @target.nil?
|
71
|
+
raise('Parsed JSON arrays must have a destination in the configuration')
|
72
|
+
elsif @target.nil?
|
73
|
+
event.to_hash.merge! parsed
|
74
|
+
else
|
75
|
+
event[@target] = parsed
|
76
|
+
end
|
83
77
|
|
84
78
|
# If no target, we target the root of the event object. This can allow
|
85
79
|
# you to overwrite @timestamp and this will typically happen for json
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-json'
|
4
|
-
s.version = '1.0.
|
4
|
+
s.version = '1.0.1'
|
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/plugin install gemname. This gem is not a stand-alone program"
|
data/spec/filters/json_spec.rb
CHANGED
@@ -86,6 +86,23 @@ describe LogStash::Filters::Json do
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
+
describe "parse JSON array into target field" do
|
90
|
+
config <<-CONFIG
|
91
|
+
filter {
|
92
|
+
json {
|
93
|
+
# Parse message as JSON, store the results in the 'data' field'
|
94
|
+
source => "message"
|
95
|
+
target => "data"
|
96
|
+
}
|
97
|
+
}
|
98
|
+
CONFIG
|
99
|
+
|
100
|
+
sample '[ { "k": "v" }, { "l": [1, 2, 3] } ]' do
|
101
|
+
insist { subject["data"][0]["k"] } == "v"
|
102
|
+
insist { subject["data"][1]["l"].to_a } == [1,2,3] # to_a for JRuby + JrJacksom which creates Java ArrayList
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
89
106
|
context "when json could not be parsed" do
|
90
107
|
|
91
108
|
subject(:filter) { LogStash::Filters::Json.new(config) }
|
@@ -124,6 +141,14 @@ describe LogStash::Filters::Json do
|
|
124
141
|
end
|
125
142
|
end
|
126
143
|
|
127
|
-
|
144
|
+
context "the JSON is an ArrayList" do
|
145
|
+
|
146
|
+
let(:message) { "[1, 2, 3]" }
|
128
147
|
|
148
|
+
it "adds the failure tag" do
|
149
|
+
expect(event['tags']).to include "_jsonparsefailure"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
129
154
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logstash-core
|
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
85
|
rubyforge_project:
|
86
|
-
rubygems_version: 2.
|
86
|
+
rubygems_version: 2.1.9
|
87
87
|
signing_key:
|
88
88
|
specification_version: 4
|
89
89
|
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.
|