Class: CircleciTools::LogUploader

Inherits:
Object
  • Object
show all
Includes:
Retryable
Defined in:
lib/circleci-tools/log_uploader.rb

Constant Summary collapse

MAX_THREADS =
5

Constants included from Retryable

Retryable::BACKOFF_FACTOR, Retryable::MAX_BACKOFF_TIME, Retryable::MAX_RETRIES

Instance Method Summary collapse

Methods included from Retryable

#retry_logger, #with_retries

Constructor Details

#initialize(log_group_name, dry_run: false) ⇒ LogUploader

Returns a new instance of LogUploader.



15
16
17
18
19
20
21
# File 'lib/circleci-tools/log_uploader.rb', line 15

def initialize(log_group_name, dry_run: false)
  @log_group_name = log_group_name
  @dry_run = dry_run
  @client = Aws::CloudWatchLogs::Client.new

  ensure_log_group_exists
end

Instance Method Details

#upload_file(file_path) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/circleci-tools/log_uploader.rb', line 23

def upload_file(file_path)
  events = generate_events(file_path)
  events.sort_by! { |event| event[:timestamp] }

  grouped_events = group_events_by_date(events)

  if @dry_run
    handle_dry_run(grouped_events)
  else
    upload_grouped_events(grouped_events, file_path)
  end
end