Class: ManageIQ::Loggers::CloudWatch

Inherits:
Base
  • Object
show all
Defined in:
lib/manageiq/loggers/cloud_watch.rb

Constant Summary collapse

NAMESPACE_FILE =
"/var/run/secrets/kubernetes.io/serviceaccount/namespace".freeze

Constants inherited from Base

Base::MAX_LOG_LINE_LENGTH

Instance Attribute Summary

Attributes inherited from Base

#logdev

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#level, #log_backtrace, log_hashes, #log_hashes, log_hashes_filter, #log_hashes_filter, log_hashes_filter=, #log_hashes_filter=, #silence

Constructor Details

#initialize(logdev, *args) ⇒ CloudWatch

Returns a new instance of CloudWatch.



26
27
28
29
# File 'lib/manageiq/loggers/cloud_watch.rb', line 26

def initialize(logdev, *args)
  super
  self.formatter = ManageIQ::Loggers::Container::Formatter.new
end

Class Method Details

.new(*args) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/manageiq/loggers/cloud_watch.rb', line 10

def self.new(*args)
  access_key_id     = ENV["CW_AWS_ACCESS_KEY_ID"].presence
  secret_access_key = ENV["CW_AWS_SECRET_ACCESS_KEY"].presence
  log_group_name    = ENV["CLOUD_WATCH_LOG_GROUP"].presence
  log_stream_name   = ENV["HOSTNAME"].presence

  container_logger = ManageIQ::Loggers::Container.new
  return container_logger unless access_key_id && secret_access_key && log_group_name && log_stream_name

  require 'cloudwatchlogger'

  creds = {:access_key_id => access_key_id, :secret_access_key => secret_access_key}
  cloud_watch_logdev = CloudWatchLogger::Client.new(creds, log_group_name, log_stream_name)
  super(cloud_watch_logdev).tap { |logger| logger.extend(ActiveSupport::Logger.broadcast(container_logger)) }
end