google-app-engine - 我应该为 GAE 中的 Go 使用哪个日志记录库?

标签 google-app-engine go google-cloud-platform

我找到了两种 GAE 的 go 库:

  1. “google.golang.org/appengine/log”
  2. “cloud.google.com/go/logging”

我应该使用哪一个? 顺便说一下,我在我的应用程序中同时使用了两个日志记录库。 在本地开发模式下,我可以看到这样的日志。

2019/01/08 06:57:34 INFO: Search keyword="test" idOnly=bool
2019/01/08 06:57:34 INFO: Search:"test"

但是当我部署到生产 GAE 时,我看不到任何日志。

不管用stackdriver by

resource.type="gae_app" resource.labels.module_id="default" 

或者gcloud命令

 gcloud app logs tail -s default

最佳答案

如果您希望日志显示在 Stackdriver Logging 中,正确的方法是使用 "google.golang.org/appengine/log" package .

但是,根据 documentation on the Go1.11 runtime ,推荐not to use the App Engine specific API's and use the Google Cloud client library .

关于日志记录,这意味着不使用“google.golang.org/appengine/log”,推荐的方法是使用 "log" package反而。一个例子:

app.yaml

runtime: go111

你好.go

package main

import (
        "fmt"
        "log"
        "net/http"
        "os"
)

func main() {
        http.HandleFunc("/", indexHandler)

        port := os.Getenv("PORT")
        if port == "" {
                port = "8080"
        }

        log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
        //Create the log and write it
        log.Printf("Hello world!")
        fmt.Fprint(w, "Log written in Stackdriver!")
}

此日志将出现在 Stackdriver Logging 中的以下位置:

resource.type="gae_app"
resource.labels.module_id="default"
logName="projects/<YOUR_PROJECT_NAME>/logs/stderr"

或者在日志过滤器下拉列表中选择stderr

但是,如果您愿意,您仍然可以使用“google.golang.org/appengine/log”包,但您还必须添加“google.golang.org/appengine”包,并添加appengine.Main() main() 函数中的入口点。

关于google-app-engine - 我应该为 GAE 中的 Go 使用哪个日志记录库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54087067/

相关文章:

java - 使用app engine java servlet动态创建和存储csv文件

python - Google App Engine 模型的 JSON 序列化

java - GAE jdo是否不支持身份策略="timestamp"

go - 如何将 interface{} 转换回其原始结构?

java - 测试非默认的 App Engine cron 作业

map - 在 Golang 中以 <value, key> 格式反转映射

去 <-chan overhead

javascript - favoriteData 在 exports.favoriteTrigger.functions.firestore.document.onCreate 在 cloudFunction 不可迭代

firebase - 使用没有组织或文件夹的服务帐户创建 GCP 和 Firebase 项目

linux - 如何在 GCP 上的 Ubuntu 18.04 上的/etc/ssh/sshd_config 中添加 MAC 和 KEX 算法