fluent-mixin-plaintextformatter 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -71,6 +71,7 @@ Provided configurations are below:
71
71
  * output\_include\_tag [yes/no]
72
72
  * output\_data\_type
73
73
  * 'json': output by JSON
74
+ * 'ltsv': output by LTSV, see: http://ltsv.org/
74
75
  * 'attr:key1,key2,key3': values of 'key1' and 'key2' and ..., with separator specified by 'field_separator'
75
76
  * field\_separator [TAB/SPACE/COMMA/SOH]
76
77
  * add_newline [yes/no]
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-mixin-plaintextformatter"
4
- gem.version = "0.2.0"
4
+ gem.version = "0.2.1"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.description = %q{included to format values into json, tsv or csv}
@@ -14,5 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
 
16
16
  gem.add_development_dependency "fluentd"
17
+ gem.add_development_dependency "ltsv"
17
18
  gem.add_runtime_dependency "fluentd"
19
+ gem.add_runtime_dependency "ltsv"
18
20
  end
@@ -1,4 +1,5 @@
1
1
  require 'fluent/config'
2
+ require 'ltsv'
2
3
 
3
4
  module Fluent
4
5
  module Mixin
@@ -57,6 +58,8 @@ module Fluent
57
58
 
58
59
  @custom_attributes = if @output_data_type == 'json'
59
60
  nil
61
+ elsif @output_data_type == 'ltsv'
62
+ nil
60
63
  elsif @output_data_type =~ /^attr:(.+)$/
61
64
  $1.split(',')
62
65
  else
@@ -66,7 +69,12 @@ module Fluent
66
69
 
67
70
  def stringify_record(record)
68
71
  if @custom_attributes.nil?
69
- record.to_json
72
+ case @output_data_type
73
+ when 'json'
74
+ record.to_json
75
+ when 'ltsv'
76
+ LTSV.dump(record)
77
+ end
70
78
  else
71
79
  @custom_attributes.map{|attr|
72
80
  (record[attr] || 'NULL').to_s
@@ -173,4 +173,18 @@ field_separator comma
173
173
  # format
174
174
  assert_equal "10000,foo foo baz\n", p.format('test.a', 1342163105, r)
175
175
  end
176
+
177
+ def test_field_separator_newline_ltsv
178
+ p = create_plugin_instance(Fluent::TestDOutput, "type testd\nlocaltime\n")
179
+ r = {'foo' => 'foo foo baz', 'bar' => 10000}
180
+ rs = {:foo => 'foo foo baz', :bar => "10000"}
181
+ # stringify
182
+ assert_equal rs, LTSV.parse(p.stringify_record(r))
183
+
184
+ line = p.format('test.d', 1342163105, r)
185
+ # output_include_time true, output_include_tag true, localtime, separator COMMA
186
+ assert_equal ['2012-07-13T16:05:05+09:00', 'test.d'], line.chomp.split(/\t/, 3)[0..1]
187
+ # output_data_type json
188
+ assert_equal rs, LTSV.parse(line.chomp.split(/\t/, 3)[2])
189
+ end
176
190
  end
data/test/output.rb CHANGED
@@ -61,4 +61,21 @@ module Fluent
61
61
  end
62
62
  end
63
63
 
64
+ class TestDOutput < Fluent::BufferedOutput
65
+ Fluent::Plugin.register_output('testa', self)
66
+
67
+ config_set_default :buffer_type, 'memory'
68
+
69
+ include Fluent::Mixin::PlainTextFormatter
70
+
71
+ config_set_default :output_include_time, true
72
+ config_set_default :output_include_tag, true
73
+ config_set_default :output_data_type, 'ltsv'
74
+ config_set_default :remove_prefix, nil
75
+ config_set_default :default_tag, 'tag.blank'
76
+
77
+ def configure(conf)
78
+ super
79
+ end
80
+ end
64
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-mixin-plaintextformatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-06 00:00:00.000000000 Z
12
+ date: 2013-02-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: ltsv
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: fluentd
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -43,6 +59,22 @@ dependencies:
43
59
  - - ! '>='
44
60
  - !ruby/object:Gem::Version
45
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: ltsv
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
46
78
  description: included to format values into json, tsv or csv
47
79
  email:
48
80
  - tagomoris@gmail.com