Class: AwsLambdaRIC::TelemetryLogger

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

Overview

Helper class to for mutating std logger with TelemetryLog

Constant Summary collapse

ENV_VAR_TELEMETRY_LOG_FD =
'_LAMBDA_TELEMETRY_LOG_FD'

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(telemetry_log_fd) ⇒ TelemetryLogger

Returns a new instance of TelemetryLogger.



141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/aws_lambda_ric.rb', line 141

def initialize(telemetry_log_fd)
  fd = telemetry_log_fd.to_i
  AwsLambdaRIC::TelemetryLogger.telemetry_log_fd_file = IO.new(fd, 'wb')
  AwsLambdaRIC::TelemetryLogger.telemetry_log_fd_file.sync = true

  AwsLambdaRIC::TelemetryLogger.telemetry_log_sink = TelemetryLogSink.new(file: AwsLambdaRIC::TelemetryLogger.telemetry_log_fd_file)

  mutate_std_logger
  mutate_kernel_puts
rescue Errno::ENOENT, Errno::EBADF
  # If File.open() fails, then the mutation won't happen and the default behaviour (print to stdout) will prevail
end

Class Attribute Details

.telemetry_log_fd_fileObject

Returns the value of attribute telemetry_log_fd_file.



134
135
136
# File 'lib/aws_lambda_ric.rb', line 134

def telemetry_log_fd_file
  @telemetry_log_fd_file
end

.telemetry_log_sinkObject

Returns the value of attribute telemetry_log_sink.



134
135
136
# File 'lib/aws_lambda_ric.rb', line 134

def telemetry_log_sink
  @telemetry_log_sink
end

Class Method Details

.closeObject



136
137
138
# File 'lib/aws_lambda_ric.rb', line 136

def close
  telemetry_log_fd_file&.close
end

.from_envObject



154
155
156
157
158
159
160
# File 'lib/aws_lambda_ric.rb', line 154

def self.from_env()
  if ENV.key?(ENV_VAR_TELEMETRY_LOG_FD)
    fd = ENV.fetch(AwsLambdaRIC::TelemetryLogger::ENV_VAR_TELEMETRY_LOG_FD)
    ENV.delete(AwsLambdaRIC::TelemetryLogger::ENV_VAR_TELEMETRY_LOG_FD)
    AwsLambdaRIC::TelemetryLogger.new(fd)
  end
end