fmt.Println输出未显示在CloudWatch日志中

问题描述 投票:2回答:2

我使用无服务器框架创建了一个简单的Go Lambda。我预计(根据文档)fmt.Printlnlog.Println的所有输出都会显示在Cloudwatch中。但我没有看到它。

以下是我为纯粹用于测试目的而放置的一行示例:

func Handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    fmt.Println("Hello from lambda")

    (...)

我确定权限是正确的,因为我看到了日志组,并且有一些Cloudwatch条目可以查看此lambda。我实际上可以看到在CloudFormation中创建了日志组,所以我确定这不是问题。但我只是看不到CloudWatch中任何Println语句的输出。这就是我所看到的:

START RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2 Version: $LATEST
END RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2
REPORT RequestId: fd48461b-3ecd-11e8-9e32-594932db04f2  Duration: 13.82 ms  Billed Duration: 100 ms Memory Size: 256 MB Max Memory Used: 21 MB  

我尝试了各种其他Print方法(如Printf),但你不会感到惊讶,没有改变任何东西。

我错过了什么?

amazon-web-services go aws-lambda amazon-cloudwatch
2个回答
1
投票

好吧,那令人尴尬......当然,你需要在运行make之前运行sls deploy ......如果你不这样做,你将始终部署陈旧的代码。我会原谅自己,因为这只是我在Go的第二天,但同样愚蠢。

我已经通过添加Makefiledeploy来更新我的install,如下所示:

build:
    dep ensure
    env GOOS=linux go build -ldflags="-s -w" -o bin/hello hello/main.go
    env GOOS=linux go build -ldflags="-s -w" -o bin/world world/main.go

deploy:
    sls deploy

install:    build deploy

make install现在构建,然后部署,防止此问题再次发生。


0
投票

对不起,我之前没有使用过Lambda。也许使用glog库是有帮助的.see the glog

© www.soinside.com 2019 - 2024. All rights reserved.