Если вы хотите, чтобы журналы отображались в журнале 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()
.