Module: LoggerPatch

Defined in:
lib/aws_lambda_ric/logger_patch.rb

Constant Summary collapse

LOG_LEVEL_MAP =
{
  'TRACE' => Logger::DEBUG,
  'DEBUG' => Logger::DEBUG,
  'INFO' => Logger::INFO,
  'WARN' => Logger::WARN,
  'ERROR' => Logger::ERROR,
  'FATAL' => Logger::FATAL
}.freeze

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.aws_lambda_log_formatObject (readonly)

Returns the value of attribute aws_lambda_log_format.



19
20
21
# File 'lib/aws_lambda_ric/logger_patch.rb', line 19

def aws_lambda_log_format
  @aws_lambda_log_format
end

.aws_lambda_log_levelObject (readonly)

Returns the value of attribute aws_lambda_log_level.



19
20
21
# File 'lib/aws_lambda_ric/logger_patch.rb', line 19

def aws_lambda_log_level
  @aws_lambda_log_level
end

Class Method Details

.json_format?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/aws_lambda_ric/logger_patch.rb', line 27

def json_format?
  @aws_lambda_log_format == 'JSON'
end

.refresh_runtime_config!Object



21
22
23
24
25
# File 'lib/aws_lambda_ric/logger_patch.rb', line 21

def refresh_runtime_config!
  @aws_lambda_log_format = ENV.fetch('AWS_LAMBDA_LOG_FORMAT', '').upcase
  env_level = ENV.fetch('AWS_LAMBDA_LOG_LEVEL', nil)
  @aws_lambda_log_level = LOG_LEVEL_MAP[env_level&.upcase]
end

Instance Method Details

#initialize(logdev, shift_age = 0, shift_size = 1_048_576, **kwargs) ⇒ Object

shift_size default to 1 megabyte, matching Ruby Logger’s default log rotation size.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/aws_lambda_ric/logger_patch.rb', line 35

def initialize(logdev, shift_age = 0, shift_size = 1_048_576, **kwargs)
  level_was_provided = kwargs.key?(:level)
  kwargs = {
    level: Logger::DEBUG,
    progname: nil,
    formatter: nil,
    datetime_format: nil,
    binmode: false,
    shift_period_suffix: '%Y%m%d'
  }.merge(kwargs)

  logdev_override = logdev

  if !logdev || logdev == $stdout || logdev == $stderr
    telemetry_sink = AwsLambdaRIC::TelemetryLogger.telemetry_log_sink
    logdev_override = telemetry_sink || logdev
    kwargs[:formatter] ||= LoggerPatch.json_format? ? JsonLogFormatter.new : LogFormatter.new
    kwargs[:level] = LoggerPatch.aws_lambda_log_level if !level_was_provided && LoggerPatch.aws_lambda_log_level
  end

  super(logdev_override, shift_age, shift_size, **kwargs)
end