fmt.Println 输出未显示在 CloudWatch 日志中
fmt.Println output does not show up in CloudWatch logs
我使用无服务器框架创建了一个简单的 Go Lambda 来玩。我预计(根据文档)fmt.Println
或 log.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
),但您不会对没有任何改变感到惊讶。
我错过了什么?
抱歉,我以前没有使用过 Lambda。也许使用 glog 库会有所帮助。see the glog
好吧,这很尴尬......当然,你需要 运行 make
在 运行 之前 sls deploy
... 如果你不这样做也就是说,您将始终部署陈旧的代码。我会原谅自己,因为这只是我在 Go 的第二天,但它仍然很愚蠢。
我通过添加 deploy
和 install
更新了我的 Makefile
,如下所示:
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
现在构建,然后部署,防止再次发生此问题。
我使用无服务器框架创建了一个简单的 Go Lambda 来玩。我预计(根据文档)fmt.Println
或 log.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
),但您不会对没有任何改变感到惊讶。
我错过了什么?
抱歉,我以前没有使用过 Lambda。也许使用 glog 库会有所帮助。see the glog
好吧,这很尴尬......当然,你需要 运行 make
在 运行 之前 sls deploy
... 如果你不这样做也就是说,您将始终部署陈旧的代码。我会原谅自己,因为这只是我在 Go 的第二天,但它仍然很愚蠢。
我通过添加 deploy
和 install
更新了我的 Makefile
,如下所示:
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
现在构建,然后部署,防止再次发生此问题。