fluent-plugin-json-nest2flat 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: e45093d5cca9ffa3fbb1402e56e2347f887e234f
4
- data.tar.gz: 648dfeb3aa5d8b18ebc3622d93145ce2e4b97024
3
+ metadata.gz: ad7d5150b74d88a5f4435944d95a818b6800eb59
4
+ data.tar.gz: 1628f1bac6bed1b7a9247f00c3d8338f47151690
5
5
  SHA512:
6
- metadata.gz: 78b95b15bb6899e345463120c5cddd9496113764952bac421e4beff856e8e9ad9b43a28ffb71be6cc7274c861a63aaa1d3a07da80d1cf3164a84224f7067b0b1
7
- data.tar.gz: e404e4dc5d0ec9f4455ae53018a9b718d4a1dcf3f12a619d7b60e4e4ecb8baa7c59e5b326ea8a8333a53455461e92a50622528894697dc83f5673d76a6ec6093
6
+ metadata.gz: a42af76cb7d2ed1c3c005e7a0b7a5deec88d97a95e665e0dd68f00f0cf6a50075440f8d868d447ce2e4438f6b3cdea0c981f6e6510a3e3c3f4f6864b5f2f0457
7
+ data.tar.gz: 187e26e1006348451d931ff07ae6db04644843fd2eae70c53eacc0cfcb5cd66e4ccf0ff62a3451279e2c727259e6eec1885298e11222981e402e54ce7b378480
data/README.md CHANGED
@@ -10,21 +10,53 @@ ex. {"hoge":1, "foo":2, "data":{"name":"taro", "age":18, "height":175}} -> ex. {
10
10
  # Configuration
11
11
  ex1.
12
12
 
13
- <match pattern>
13
+ <match example>
14
14
  type json_nest2flat
15
15
  tag json_nest2flat.finished
16
16
  json_keys data1,data2,data3
17
17
  </match>
18
18
 
19
+ in
20
+
21
+ example: {"name":"taro","age":"17","data1":{"a":"b"},"data2":{"c":"d"},"data3":{"e":"f"}}
22
+
23
+ out
24
+
25
+ json_nest2flat.finished: {"name":"taro","age":"17","a":"b","c":"d","e":"f"}
19
26
 
20
27
  ex2.
21
28
 
22
- <match pattern>
29
+ <match example>
23
30
  type json_nest2flat
24
31
  add_tag_prefix json_nest2flat
25
32
  json_keys data1,data2,data3
26
33
  </match>
27
34
 
35
+ in
36
+
37
+ example: {"name":"taro","age":"17","data1":{"a":"b"},"data2":{"c":"d"},"data3":{"e":"f"}}
38
+
39
+ out
40
+
41
+ json_nest2flat.example: {"name":"taro","age":"17","a":"b","c":"d","e":"f"}
42
+
43
+ ex3.
44
+
45
+ <match example>
46
+ type json_nest2flat
47
+ add_tag_prefix json_nest2flat
48
+ json_keys data1
49
+ ignore_item_keys {"data1":["b","c","d"]}
50
+ </match>
51
+
52
+ in
53
+
54
+ example: {"name":"taro","age":"17","data1":{"a":"b","b":"c","c":"d","d":"e","e":"f"}}
55
+
56
+ out
57
+
58
+ json_nest2flat.example: {"name":"taro","age":"17","a":"b","e":"f"}
59
+
28
60
  # Parameters
29
61
  * tag
30
62
 
@@ -38,6 +70,11 @@ ex2.
38
70
 
39
71
  It is the key that you want to convert to a flat structure from JSON nested. It is more than one can be specified in a comma-separated.
40
72
 
73
+ * ignore_item_keys
74
+
75
+ You specify the item that you want to ignore the key that is specified in the "json_keys". The format is JSON format. Please refer to the section of "Configuration" example of setting.
76
+
77
+
41
78
  # TODO
42
79
 
43
80
  Currently, nested structure of two or more layers will be unexpected.
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "fluent-plugin-json-nest2flat"
4
- spec.version = "0.0.3"
4
+ spec.version = "0.0.4"
5
5
  spec.authors = ["Fukui ReTu"]
6
6
  spec.email = ["s0232101@gmail.com"]
7
7
  spec.description = %q{Output filter plugin to convert to a flat structure the JSON that is nest}
@@ -1,11 +1,11 @@
1
1
  module Fluent
2
2
  class JsonNestToFlatOutput < Fluent::Output
3
-
4
3
  Fluent::Plugin.register_output('json_nest2flat', self)
5
4
 
6
5
  config_param :tag, :string, :default => nil
7
6
  config_param :add_tag_prefix, :string, :default => nil
8
7
  config_param :json_keys, :string, :default => nil
8
+ config_param :ignore_item_keys, :string, :default => nil
9
9
 
10
10
  def configure(conf)
11
11
  super
@@ -27,13 +27,28 @@ module Fluent
27
27
  end
28
28
 
29
29
  @json_keys = @json_keys.split(",")
30
+
31
+ @ignore_item_keys = conf['ignore_item_keys']
32
+
33
+ if !@ignore_item_keys.nil?
34
+ begin
35
+ @ignore_item_keys = JSON.parse(@ignore_item_keys)
36
+ rescue => e
37
+ raise Fluent::ConfigError, "ignore_item_keys is illegal! ignore_item_keys=#{@ignore_item_keys}"
38
+ end
39
+ end
30
40
  end
31
41
 
32
42
  def emit(tag, es, chain)
33
43
  es.each { |time, record|
34
44
  chain.next
35
45
 
36
- new_record = _convert_record(record);
46
+ new_record = nil
47
+ begin
48
+ new_record = _convert_record(record);
49
+ rescue => e
50
+ $log.error "json_data is parse error.", :error=>e.to_s
51
+ end
37
52
 
38
53
  if @enabled_tag
39
54
  Fluent::Engine.emit(@tag, time, new_record)
@@ -49,16 +64,23 @@ module Fluent
49
64
  # @return [Hash] ネストされたJSONをフラットな構造に変換したレコード
50
65
  private
51
66
  def _convert_record(old_record)
52
- new_record = Hash.new([])
67
+ new_record = {}
53
68
  json_keys_exist_count = 0
54
69
 
55
70
  old_record.each { |old_record_k, old_record_v|
56
- if (@json_keys.include?(old_record_k))
71
+ if @json_keys.include?(old_record_k)
57
72
  json_data = old_record[old_record_k]
58
73
  JSON.parse(json_data).each { |json_k, json_v|
74
+ if @ignore_item_keys.include?(old_record_k)
75
+ # 無視するキーに該当
76
+ ignore_items = @ignore_item_keys[old_record_k]
77
+ if ignore_items.include?(json_k)
78
+ # 無視するアイテムに該当するのでハッシュに含まない
79
+ next
80
+ end
81
+ end
59
82
  new_record[json_k] = json_v
60
83
  }
61
-
62
84
  json_keys_exist_count += 1
63
85
  else
64
86
  new_record[old_record_k] = old_record_v
@@ -71,6 +93,5 @@ module Fluent
71
93
 
72
94
  return new_record
73
95
  end
74
-
75
96
  end
76
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-json-nest2flat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fukui ReTu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-29 00:00:00.000000000 Z
11
+ date: 2014-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler