Какую библиотеку журналов я должен использовать для Go в GAE? - PullRequest
0 голосов
/ 08 января 2019

Я нахожу две библиотеки go для GAE:

  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 я не вижу никаких журналов.

Независимо от использования стека-драйвера

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

Или команда gcloud

 gcloud app logs tail -s default

1 Ответ

0 голосов
/ 08 января 2019

Если вы хотите, чтобы журналы отображались в журнале Stackdriver, правильным подходом будет использование пакета "google.golang.org/appengine/log" .

Однако, согласно документации для среды выполнения Go1.11 , рекомендуется не использовать специфические API App Engine и использовать клиентскую библиотеку Google Cloud .

Что касается ведения журнала, это означает, что вместо использования "google.golang.org/appengine/log" рекомендуется использовать вместо этого "log" пакет . Пример:

app.yaml

runtime: go111

hello.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 под:

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().

...