fluent-plugin-cloudwatch-logs 0.8.1.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a54897a6cb82b6180e4f3a627b3cb89859992553d5d18d2d48deb80a8820d3c
4
- data.tar.gz: f16ac2df79648c3b919132811dfcdb3a82b3ea9776256adcad7f705cbb5e2249
3
+ metadata.gz: aa86963bdf4ec3faf83caed90ad1ab437ea2991d97e793d50a2e507e9ff0c1af
4
+ data.tar.gz: 4add147b77a03c2296469b21b188882a105d7736f5a576a6331aac9d266e4e34
5
5
  SHA512:
6
- metadata.gz: e24910ad7f2120bac140d26080c05e851fc7388a683e07ac308282d8dc7c6d31afb19b2744d9b2628bbe7b9f2c784da83a7c8b60f908478626fc2cd16ea0eb9f
7
- data.tar.gz: dc81615457af3fcf5ff8347fab186c2ea9cec90af31de3ac2bc5c13ff51ea4d234acd07f162d5e1fa36d5c8a8d1079ed82b67cb2344cb084914d1b4c63c07b55
6
+ metadata.gz: 7372c750e2947bf4b872b1f3f53c19494ed136274d0b9443f21ae32c8595e9d30968aae30a82a375a48ce6e7d0ce6429106b4ebe2c68bcdace4fd7801bc1648d
7
+ data.tar.gz: 1bc6416f7dc38a2479e01a4847bf4241e0c29cbd7ac531e05faa9d4da2cec2cc7cc428b76f2a726c9fda173e4d6d2c51a24cb03b70b0db05fc032e12088c7245
@@ -2,7 +2,7 @@ module Fluent
2
2
  module Plugin
3
3
  module Cloudwatch
4
4
  module Logs
5
- VERSION = "0.8.1.1"
5
+ VERSION = "0.8.2"
6
6
  end
7
7
  end
8
8
  end
@@ -219,15 +219,22 @@ module Fluent::Plugin
219
219
 
220
220
  events = []
221
221
  rs.each do |t, time, record|
222
+ record = drop_empty_record(record)
223
+
222
224
  time_ms = (time.to_f * 1000).floor
223
225
 
224
226
  scrub_record!(record)
225
227
  unless @message_keys.empty?
226
- message = @message_keys.map {|k| record[k].to_s }.join(' ')
228
+ message = @message_keys.map{|k| record[k].to_s }.reject{|e| e.empty? }.join(' ')
227
229
  else
228
230
  message = @json_handler.dump(record)
229
231
  end
230
232
 
233
+ if message.empty?
234
+ log.warn "Within specified message_key(s): (#{@message_keys.join(',')}) do not have non-empty record. Skip."
235
+ next
236
+ end
237
+
231
238
  if @max_message_length
232
239
  message = message.slice(0, @max_message_length)
233
240
  end
@@ -256,6 +263,17 @@ module Fluent::Plugin
256
263
  end
257
264
 
258
265
  private
266
+
267
+ def drop_empty_record(record)
268
+ new_record = record.dup
269
+ new_record.each_key do |k|
270
+ if new_record[k] == ""
271
+ new_record.delete(k)
272
+ end
273
+ end
274
+ new_record
275
+ end
276
+
259
277
  def scrub_record!(record)
260
278
  case record
261
279
  when Hash
@@ -714,6 +714,36 @@ class CloudwatchLogsOutputTest < Test::Unit::TestCase
714
714
  logs = d.logs
715
715
  assert(logs.any?{|log| log =~ /Log event in .* discarded because it is too large: 262184 bytes exceeds limit of 262144/})
716
716
  end
717
+
718
+ def test_do_not_emit_empty_record
719
+ new_log_stream
720
+
721
+ d = create_driver(<<-EOC)
722
+ #{default_config}
723
+ message_keys cloudwatch,message
724
+ log_group_name #{log_group_name}
725
+ log_stream_name #{log_stream_name}
726
+ EOC
727
+
728
+ time = event_time
729
+ d.run(default_tag: fluentd_tag) do
730
+ d.feed(time, {'cloudwatch' => 'logs1', 'message' => ''})
731
+ d.feed(time + 1, {'cloudwatch' => '', 'message' => 'message2'})
732
+ d.feed(time + 2, {'cloudwatch' => '', 'message' => ''})
733
+ end
734
+
735
+ sleep 10
736
+
737
+ events = get_log_events
738
+ assert_equal(2, events.size)
739
+ assert_equal((time.to_f * 1000).floor, events[0].timestamp)
740
+ assert_equal('logs1', events[0].message)
741
+ assert_equal((time.to_i + 1) * 1000, events[1].timestamp)
742
+ assert_equal('message2', events[1].message)
743
+
744
+ logs = d.logs
745
+ assert(logs.any?{|log| log =~ /Within specified message_key\(s\): \(cloudwatch,message\) do not have non-empty record. Skip./})
746
+ end
717
747
  end
718
748
 
719
749
  def test_scrub_record
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-cloudwatch-logs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-18 00:00:00.000000000 Z
11
+ date: 2020-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd