fluent-mixin-plaintextformatter 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fluent-mixin-plaintextformatter.gemspec +1 -1
- data/lib/fluent/mixin/plaintextformatter.rb +14 -2
- data/test/helper.rb +4 -1
- data/test/mixin/test_plaintextformatter.rb +51 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a8f706410fb735c2cf645b5a11eb1b67f6afc82
|
4
|
+
data.tar.gz: dc8832c1ab304abe876300f83a367fd7201ed216
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b18fcd7738dd940b2d297e9b5e8802e20653bc4eaa189801af644c39361b1aa32bcfc430ddd93746a7c2a0cb0afbcff6bd9b3f1c2978fb384ee7295351c6df2
|
7
|
+
data.tar.gz: 9ee257ee3a95d62953e8e343139bc4634d9c91e6ab0ccc0b84f28a9c53568d5f54c28f4f129efb2515f35e45e9221b823b0e985d4f492ef0f24ec75c0ac4657a
|
@@ -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.
|
4
|
+
gem.version = "0.2.4"
|
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}
|
@@ -8,6 +8,8 @@ module Fluent
|
|
8
8
|
attr_accessor :add_newline, :field_separator
|
9
9
|
attr_accessor :remove_prefix, :default_tag
|
10
10
|
|
11
|
+
attr_accessor :suppress_log_broken_string
|
12
|
+
|
11
13
|
attr_accessor :f_separator
|
12
14
|
|
13
15
|
def first_value(*args)
|
@@ -65,6 +67,12 @@ module Fluent
|
|
65
67
|
else
|
66
68
|
raise Fluent::ConfigError, "invalid output_data_type:'#{@output_data_type}'"
|
67
69
|
end
|
70
|
+
|
71
|
+
@suppress_log_broken_string = first_value(
|
72
|
+
Fluent::Config.bool_value(conf['suppress_log_broken_string']),
|
73
|
+
@suppress_log_broken_string,
|
74
|
+
false
|
75
|
+
)
|
68
76
|
end
|
69
77
|
|
70
78
|
def stringify_record(record)
|
@@ -105,11 +113,15 @@ module Fluent
|
|
105
113
|
rescue JSON::GeneratorError => e
|
106
114
|
# partial character in source, but hit end
|
107
115
|
# source sequence is illegal/malformed utf-8
|
108
|
-
|
116
|
+
unless @suppress_log_broken_string
|
117
|
+
$log.warn e.message + ", ignored", :error_class => e.class, :tag => tag, :record => record.inspect # quote explicitly
|
118
|
+
end
|
109
119
|
''
|
110
120
|
rescue ArgumentError => e
|
111
121
|
raise unless e.message == 'invalid byte sequence in UTF-8'
|
112
|
-
|
122
|
+
unless @suppress_log_broken_string
|
123
|
+
$log.warn e.message + ", ignored", :error_class => e.class, :tag => tag, :record => record.inspect # quote explicitly
|
124
|
+
end
|
113
125
|
''
|
114
126
|
end
|
115
127
|
end
|
data/test/helper.rb
CHANGED
@@ -16,8 +16,11 @@ require 'fluent/test'
|
|
16
16
|
unless ENV.has_key?('VERBOSE')
|
17
17
|
nulllogger = Object.new
|
18
18
|
nulllogger.instance_eval {|obj|
|
19
|
+
def logs ; @logs ; end
|
20
|
+
def clear ; @logs = [] ; end
|
19
21
|
def method_missing(method, *args)
|
20
|
-
|
22
|
+
@logs ||= []
|
23
|
+
@logs.push([method, *args])
|
21
24
|
end
|
22
25
|
}
|
23
26
|
$log = nulllogger
|
@@ -175,6 +175,47 @@ field_separator comma
|
|
175
175
|
end
|
176
176
|
|
177
177
|
def test_format_invalid_utf8_sequence
|
178
|
+
$log.clear
|
179
|
+
|
180
|
+
invalid_str = [0xFA, 0xFB].pack('CC').force_encoding('utf-8')
|
181
|
+
valid_str = [0xFF, 0xE3].pack("U*")
|
182
|
+
|
183
|
+
p1 = create_plugin_instance(Fluent::TestAOutput, %[
|
184
|
+
type testa
|
185
|
+
output_include_time true
|
186
|
+
output_include_tag true
|
187
|
+
output_data_type json
|
188
|
+
])
|
189
|
+
r1 = p1.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
|
190
|
+
# #format should logs for this record (but we cannot test it...)
|
191
|
+
assert_equal '', r1
|
192
|
+
|
193
|
+
assert_equal :warn, $log.logs[0][0]
|
194
|
+
assert $log.logs[0][1] =~ /source sequence is illegal\/malformed utf-8, ignored/
|
195
|
+
assert_equal 'JSON::GeneratorError', $log.logs[0][2][:error_class].to_s
|
196
|
+
|
197
|
+
$log.clear
|
198
|
+
|
199
|
+
p2 = create_plugin_instance(Fluent::TestAOutput, %[
|
200
|
+
type testa
|
201
|
+
output_include_time true
|
202
|
+
output_include_tag true
|
203
|
+
output_data_type ltsv
|
204
|
+
])
|
205
|
+
r2 = p2.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
|
206
|
+
# #format should logs for this record (but we cannot test it...)
|
207
|
+
assert_equal '', r2
|
208
|
+
|
209
|
+
assert_equal :warn, $log.logs[0][0]
|
210
|
+
assert $log.logs[0][1] =~ /^invalid byte sequence in UTF-8, ignored/
|
211
|
+
assert_equal 'ArgumentError', $log.logs[0][2][:error_class].to_s
|
212
|
+
|
213
|
+
$log.clear
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_format_invalid_utf8_sequence_suppress_logs
|
217
|
+
$log.clear
|
218
|
+
|
178
219
|
invalid_str = [0xFA, 0xFB].pack('CC').force_encoding('utf-8')
|
179
220
|
valid_str = [0xFF, 0xE3].pack("U*")
|
180
221
|
|
@@ -183,20 +224,30 @@ type testa
|
|
183
224
|
output_include_time true
|
184
225
|
output_include_tag true
|
185
226
|
output_data_type json
|
227
|
+
suppress_log_broken_string true
|
186
228
|
])
|
187
229
|
r1 = p1.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
|
188
230
|
# #format should logs for this record (but we cannot test it...)
|
189
231
|
assert_equal '', r1
|
190
232
|
|
233
|
+
assert_equal 0, $log.logs.size
|
234
|
+
|
235
|
+
$log.clear
|
236
|
+
|
191
237
|
p2 = create_plugin_instance(Fluent::TestAOutput, %[
|
192
238
|
type testa
|
193
239
|
output_include_time true
|
194
240
|
output_include_tag true
|
195
241
|
output_data_type ltsv
|
242
|
+
suppress_log_broken_string true
|
196
243
|
])
|
197
244
|
r2 = p2.format('tag', Fluent::Engine.now, {'foo' => valid_str, 'bar' => invalid_str + valid_str})
|
198
245
|
# #format should logs for this record (but we cannot test it...)
|
199
246
|
assert_equal '', r2
|
247
|
+
|
248
|
+
assert_equal 0, $log.logs.size
|
249
|
+
|
250
|
+
$log.clear
|
200
251
|
end
|
201
252
|
|
202
253
|
def test_field_separator_newline_ltsv
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-mixin-plaintextformatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAGOMORI Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|