Skip to content

No standardised error logging like other languages #301

@mikeparker

Description

@mikeparker

Is your feature request related to a problem? Please describe.
If a golang lambda handler returns an error, you simply get the error message in the logs. For other languages this is a more structured error syntax, for example NodeJS:

2019-06-05T22:11:27.082Z 8bbbfb91-a3ff-4502-b1b7-cb8f6658de64 ERROR Invoke Error {"errorType":"ReferenceError","errorMessage":"x is not defined","stack":["ReferenceError: x is not defined"," at Runtime.exports.handler (/var/task/index.js:2:3)"," at Runtime.handleOnce (/var/runtime/Runtime.js:63:25)"," at process._tickCallback (internal/process/next_tick.js:68:7)"]}

Example logs from Ruby:

START RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3 Version: $LATEST
Processing event...
Error raised from handler method
{
  "errorMessage": "no implicit conversion of String into Integer",
  "errorType": "Function<TypeError>",
  "stackTrace": [
    "/var/task/function.rb:3:in `first'",
    "/var/task/function.rb:3:in `handler'"
  ]
}
END RequestId: 5ce6a15a-f156-11e8-b8aa-25371a5ca2a3

This means we can't do any pattern matching across golang lambda functions without manually inserting error syntax into a shared error handling library - I think this should be out of the box from Lambda itself.

Describe the solution you'd like

One of:
a) If the Lambda errors from code, output a log line saying ERROR RequestId: xxx Version: xxx just like the START / END / REPORT lines
b) If the Lambda errors from code, add a STATUS to either the END or the REPORT log lines to make it clear it's been an error

BONUS POINTS

Add OUT OF MEMORY and TIMEOUT to the STATUS as well as just OK and ERROR.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions