来自外部软件包的AWS Lambda golang日志记录

时间:2018-07-26 06:37:27

标签: go logging aws-lambda

我开始将外部软件包用于用Golang编写的lambda函数。

如果有什么区别,我会使用无服务器框架。

每次数据库中发生错误时,我想集中记录错误。

但是我注意到日志没有显示在cloudwatch上。仅显示main软件包中的日志。

这是我的代码

package response
func ServerError(err error) (events.APIGatewayProxyResponse, error) {
    log.Print(fmt.Errorf("ERROR: %v", err))
    return Custom(500, "Internal Server Error", nil)
}

我也尝试过

package response
func ServerError(err error) (events.APIGatewayProxyResponse, error) {
    fmt.Println(fmt.Errorf("ERROR: %v", err))
    return Custom(500, "Internal Server Error", nil)
}

我的问题是如何启用在主程序包之外的lambda登录?

谢谢!

编辑

事实证明log.Print(fmt.Errorf("ERROR: %v", err))也可以工作。我上次一定很想念它。

1 个答案:

答案 0 :(得分:0)

在无服务器框架中,任何打印到std.out / std err的内容都会写入cloudwatch日志中。因此,您要做的就是将错误写入std.err

fmt.Fprintf(os.Stderr, "log message: %s", str)

这篇文章涉及写std.err https://stackoverflow.com/a/40694000/2840591