Class: CloudWatchLogsPoller::Process

Inherits:
Object
  • Object
show all
Defined in:
lib/cloud_watch_logs_poller/process.rb

Instance Method Summary collapse

Constructor Details

#initialize(interval, debug: false) ⇒ Process

Returns a new instance of Process.



3
4
5
6
7
# File 'lib/cloud_watch_logs_poller/process.rb', line 3

def initialize(interval, debug: false)
  @client = Aws::CloudWatchLogs::Client.new
  @interval = interval
  @debug = debug
end

Instance Method Details

#execute(log_group_name:, log_stream_name_prefix: nil, filter_pattern: nil, start_time: Time.now, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/cloud_watch_logs_poller/process.rb', line 9

def execute(log_group_name:, log_stream_name_prefix: nil, filter_pattern: nil, start_time: Time.now, &block)
  params = {
    log_group_name: log_group_name,
    log_stream_name_prefix: log_stream_name_prefix,
    start_time: start_time.is_a?(Time) ? start_time.to_i * 1000 : start_time,
    filter_pattern: filter_pattern,
    interleaved: true
  }

  loop do
    loop do
      result = @client.filter_log_events(params)
      result.events.each do |event|
        block.call(Event.convert_from_filtered_log_event(event))
      end

      debug_log(params)
      debug_log(result)

      break unless result.next_token

      params[:next_token] = result.next_token
    end

    sleep(@interval)
  end
rescue Interrupt
  puts "Polling stopped."
end