logger icon indicating copy to clipboard operation
logger copied to clipboard

Aws Lambdas - undefined method `[]' for nil:NilClass

Open cgaube opened this issue 1 year ago • 2 comments

Getting some errors with the logger gem when executing

logger = Logger.new($stdout)
logger.info 'test'
  "errorMessage": "undefined method `[]' for nil:NilClass",
  "errorType": "Function<NoMethodError>",
  "stackTrace": [
    "/var/task/vendor/bundle/ruby/3.2.0/gems/logger-1.6.0/lib/logger.rb:384:in `level'",
    "/var/task/vendor/bundle/ruby/3.2.0/gems/logger-1.6.0/lib/logger.rb:653:in `add'",
    "/var/task/vendor/bundle/ruby/3.2.0/gems/logger-1.6.0/lib/logger.rb:697:in `info'",

error does not appear when using version 1.5.3 of the gem

https://github.com/ruby/logger/compare/v1.5.3...v1.6.0

For some reason it looks like the initialize function is not being triggered and thus @level_override is never set to {}

cgaube avatar Jul 17 '24 17:07 cgaube

Wow so here is the culprit AWS lambda ecosystem is actually monkey patching the logger class and because my code is using $stdout it goes though their patch. that does NOT setup

  def initialize(logdev, shift_age = 0, shift_size = 1048576, level: Logger::DEBUG,
                   progname: nil, formatter: nil, datetime_format: nil,
                   binmode: false, shift_period_suffix: '%Y%m%d')
    #  use unpatched constructor if logdev is a filename or an IO Object other than $stdout or $stderr
    if logdev && logdev != $stdout && logdev != $stderr
      super(logdev, shift_age, shift_size, level: level, progname: progname,
                      formatter: formatter, datetime_format: datetime_format,
                      binmode: binmode, shift_period_suffix: shift_period_suffix)
    else
      self.level = level
      self.progname = progname
      @default_formatter = LambdaLogFormatter.new
      self.datetime_format = datetime_format
       self.formatter = formatter
      @logdev = TELEMETRY_LOG_SINK
    end
  end
end

I am not sure where this code is defined or what Github project to use to open an issue

cgaube avatar Jul 17 '24 18:07 cgaube

somebody beat me to it https://github.com/aws/aws-lambda-ruby-runtime-interface-client/issues/33

cgaube avatar Jul 17 '24 18:07 cgaube

This report has been resolved by https://github.com/ruby/logger/releases/tag/v1.6.1

hsbt avatar Sep 10 '24 04:09 hsbt