fluent-plugin-parser 0.4.0 → 0.4.1

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: 1cfb579022231c0bf26eb16a1156a7e9e5aa24b8
4
- data.tar.gz: 6b096b93cce0ddf6995e92058e44a46c0ac59b6f
3
+ metadata.gz: 7a7890c46c538f109454bf0442db0dcd2a4f75b0
4
+ data.tar.gz: f50a1814587e4702f3ae47eef54f6a4208ecd4ad
5
5
  SHA512:
6
- metadata.gz: 9f59e117075d751a7a734b8e4ad15e9ef1e1a0bce142285c4f6e7b534d235009ee207d0918219ec5a3fbfdcb928280abc893957587ff5d8059d519cf0f016469
7
- data.tar.gz: e171adea68763ffd821fc34d7ef27298122c2155e8238d461aa563e3cf3395a97c8b18ae5a125e9368222d3c9fd08ac9f1e63bea67063ad6d49f194f00065e9e
6
+ metadata.gz: 37956f2b75dc8aed2f471ea321afbea843f97ca568a09e3cf169bb159f38c8d481e431c30141611cb909d8a7dfb712856aec4fd24d5937edb9610c1576fc85af
7
+ data.tar.gz: 5e8af5d4544c7cd879345c06a10d28210974f2de34cd1a75ad1e63232739269b32e6e0eedd5ffc13ee740ec2fadd10fefe385bdfa1186b76be266f0399027b59
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-parser"
4
- gem.version = "0.4.0"
4
+ gem.version = "0.4.1"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.description = %q{fluentd plugin to parse single field, or to combine log structure into single field}
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
15
  gem.require_paths = ["lib"]
16
16
 
17
+ gem.add_development_dependency "test-unit"
17
18
  gem.add_development_dependency "rake"
18
19
  gem.add_runtime_dependency "fluentd", ">= 0.10.54"
19
20
  end
@@ -21,6 +21,11 @@ class Fluent::ParserOutput < Fluent::Output
21
21
  require 'time'
22
22
  end
23
23
 
24
+ # Define `log` method for v0.10.42 or earlier
25
+ unless method_defined?(:log)
26
+ define_method("log") { $log }
27
+ end
28
+
24
29
  def configure(conf)
25
30
  super
26
31
 
@@ -70,8 +75,16 @@ class Fluent::ParserOutput < Fluent::Output
70
75
  raw_value = record[@key_name]
71
76
  begin
72
77
  @parser.parse(raw_value) do |t,values|
73
- t ||= time
74
- handle_parsed(tag, record, t, values)
78
+ if values
79
+ t ||= time
80
+ handle_parsed(tag, record, t, values)
81
+ else
82
+ log.warn "pattern not match with data '#{raw_value}'" unless @suppress_parse_error_log
83
+ if @reserve_data
84
+ t = time
85
+ handle_parsed(tag, record, time, {})
86
+ end
87
+ end
75
88
  end
76
89
  rescue Fluent::TextParser::ParserError => e
77
90
  log.warn e.message unless @suppress_parse_error_log
@@ -82,8 +95,16 @@ class Fluent::ParserOutput < Fluent::Output
82
95
  end
83
96
  replaced_string = replace_invalid_byte(raw_value)
84
97
  @parser.parse(replaced_string) do |t,values|
85
- t ||= time
86
- handle_parsed(tag, record, t, values)
98
+ if values
99
+ t ||= time
100
+ handle_parsed(tag, record, t, values)
101
+ else
102
+ log.warn "pattern not match with data '#{raw_value}'" unless @suppress_parse_error_log
103
+ if @reserve_data
104
+ t = time
105
+ handle_parsed(tag, record, time, {})
106
+ end
107
+ end
87
108
  end
88
109
  else
89
110
  raise
@@ -106,11 +127,7 @@ class Fluent::ParserOutput < Fluent::Output
106
127
  if @reserve_data
107
128
  r = r ? record.merge(r) : record
108
129
  end
109
- if r
110
- Fluent::Engine.emit(tag, t, r)
111
- else
112
- log.warn "pattern not match #{raw_value}" unless @suppress_parse_error_log
113
- end
130
+ Fluent::Engine.emit(tag, t, r)
114
131
  end
115
132
 
116
133
  def replace_invalid_byte(string)
@@ -1,6 +1,8 @@
1
1
  module Fluent
2
2
  class TextParser
3
- class KVPairParser
3
+ class KVPairParser < Parser
4
+ Plugin.register_parser('kv_pair', self)
5
+
4
6
  # key<delim1>value is pair and <pair><delim2><pair> ...
5
7
  # newline splits records
6
8
  include Configurable
@@ -16,7 +18,7 @@ module Fluent
16
18
  @time_parser = TimeParser.new(@time_format)
17
19
  end
18
20
 
19
- def call(text)
21
+ def parse(text)
20
22
  text.split("\n").each do |line|
21
23
  pairs = text.split(@delim2)
22
24
  record = {}
@@ -33,7 +35,5 @@ module Fluent
33
35
  end
34
36
  end
35
37
  end
36
-
37
- register_template("kv_pair", Proc.new { KVPairParser.new })
38
38
  end
39
39
  end
@@ -196,7 +196,7 @@ class ParserOutputTest < Test::Unit::TestCase
196
196
  d3x = create_driver(%[
197
197
  tag parsed
198
198
  key_name data
199
- format /^(?<x>\d)(?<y>\d) (?<t>.+)$/
199
+ format /^(?<x>\\d)(?<y>\\d) (?<t>.+)$/
200
200
  reserve_data yes
201
201
  ], 'test.in')
202
202
  time = Time.parse("2012-04-02 18:20:59").to_i
@@ -153,7 +153,7 @@ add_prefix parsed
153
153
  key_name message
154
154
  format syslog
155
155
  EOF
156
- time = Time.parse("2014-11-05 15:59:30").to_i
156
+ time = Time.parse("11/05 15:59:30").to_i # time is assumed as current year
157
157
  d.run do
158
158
  d.emit({"message" => logs[0]}, time)
159
159
  d.emit({"message" => logs[1]}, time)
@@ -165,7 +165,7 @@ EOF
165
165
 
166
166
  e = emits[0]
167
167
  assert_equal 'parsed.in', e[0]
168
- assert_equal Time.parse("2014-11-05 16:19:48").to_i, e[1]
168
+ assert_equal Time.parse("11/05 16:19:48").to_i, e[1]
169
169
  r = e[2]
170
170
  assert_equal 'myhost.local', r['host']
171
171
  assert_equal 'netbiosd', r['ident']
@@ -174,7 +174,7 @@ EOF
174
174
 
175
175
  e = emits[1]
176
176
  assert_equal 'parsed.in', e[0]
177
- assert_equal Time.parse("2014-11-05 16:21:20").to_i, e[1]
177
+ assert_equal Time.parse("11/05 16:21:20").to_i, e[1]
178
178
  r = e[2]
179
179
  assert_equal 'myhost.local', r['host']
180
180
  assert_equal 'coreaudiod', r['ident']
@@ -183,7 +183,7 @@ EOF
183
183
 
184
184
  e = emits[2]
185
185
  assert_equal 'parsed.in', e[0]
186
- assert_equal Time.parse("2014-11-05 16:21:20").to_i, e[1]
186
+ assert_equal Time.parse("11/05 16:21:20").to_i, e[1]
187
187
  r = e[2]
188
188
  assert_equal 'myhost.local', r['host']
189
189
  assert_equal 'coreaudiod', r['ident']
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAGOMORI Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
11
+ date: 2015-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-unit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
94
  version: '0'
81
95
  requirements: []
82
96
  rubyforge_project:
83
- rubygems_version: 2.2.2
97
+ rubygems_version: 2.4.5
84
98
  signing_key:
85
99
  specification_version: 4
86
100
  summary: plugin to parse/combine fluentd log messages