fluent-plugin-fluent-plugin-json-size-limit 0.1.12 → 0.1.14
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c1f2e6ac036ba52dfd968b14d7596f477a47453d7944244787a374772b3eb09
|
4
|
+
data.tar.gz: ce671aa6d8e8e3d0efa565f82a57689308347bd61e5ef34acccda2cdd403e6f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0782af89ef48f11fcc72109ce021c6380000eeb37342710726182ca6cfcb22111e6abf4ea3e3f30e3ebb0b0d6e36e8e437800edd698ebfe514262202f4f9f7a4'
|
7
|
+
data.tar.gz: 98abef7edd4d61cc40b5d6840ecc3986316a05204aec1b8924abb94b040819127b330eafc451c05b65767c596bcb954392531b62be8f6f6002262045897364bd
|
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = "fluent-plugin-fluent-plugin-json-size-limit"
|
6
|
-
spec.version = "0.1.
|
6
|
+
spec.version = "0.1.14"
|
7
7
|
spec.authors = ["Mykola Panin"]
|
8
8
|
spec.email = ["mykola.panin@creatoriq.com"]
|
9
9
|
|
@@ -20,13 +20,18 @@ module Fluent
|
|
20
20
|
class JsonSizeLimitFilter < Filter
|
21
21
|
Fluent::Plugin.register_filter('jsonsizelimit', self)
|
22
22
|
|
23
|
+
config_param :max_size, :size, default: 250 * 1024
|
24
|
+
|
23
25
|
def configure(conf)
|
24
26
|
super
|
27
|
+
log.debug "Configuring JsonSizeLimitFilter with max_size: #{@max_size}"
|
25
28
|
end
|
26
29
|
|
27
30
|
def filter(tag, time, record)
|
28
31
|
json_str = record.to_json
|
29
|
-
|
32
|
+
log.debug "Original record size: #{json_str.bytesize} bytes"
|
33
|
+
|
34
|
+
while json_str.bytesize > @max_size
|
30
35
|
sorted_fields = record.sort_by { |k, v| v.to_s.length }.reverse
|
31
36
|
reduced = false
|
32
37
|
|
@@ -34,24 +39,26 @@ module Fluent
|
|
34
39
|
next unless value.is_a?(String) && value.length > 10
|
35
40
|
|
36
41
|
current_size = json_str.bytesize
|
37
|
-
|
38
|
-
excess_size = current_size - target_size
|
42
|
+
excess_size = current_size - @max_size
|
39
43
|
|
40
44
|
new_length = [value.length - excess_size, 0].max
|
41
45
|
record[key] = value[0...new_length]
|
42
|
-
|
43
46
|
json_str = record.to_json
|
44
|
-
|
47
|
+
|
48
|
+
if json_str.bytesize <= @max_size
|
49
|
+
log.debug "Reduced size of field '#{key}'"
|
45
50
|
reduced = true
|
46
51
|
break
|
47
52
|
end
|
48
53
|
end
|
49
54
|
|
50
55
|
break unless reduced
|
56
|
+
log.debug "Intermediate record size: #{json_str.bytesize} bytes"
|
51
57
|
end
|
58
|
+
|
59
|
+
log.debug "Final record size: #{json_str.bytesize} bytes"
|
52
60
|
record
|
53
61
|
end
|
54
62
|
end
|
55
63
|
end
|
56
64
|
end
|
57
|
-
|