Google app engine GAE Golang-log.Print()?
在哪里可以读取通过调用函数创建的日志:Google app engine GAE Golang-log.Print()?,google-app-engine,logging,go,Google App Engine,Logging,Go,在哪里可以读取通过调用函数创建的日志: log.Print("Message") Main下的选项卡“Logs”似乎只显示有关调用了哪些URL的信息,但没有应用程序将显示的任何调试信息。如中所述,如果希望日志显示在控制台中,则应使用上下文界面来记录日志,而不是日志 c := appengine.NewContext(r) c.Infof("Requested URL: %v", r.URL) 必须在其他方法调用中传递相同的上下文对象。 以下是一个例子: func handleSign(w h
log.Print("Message")
Main下的选项卡“Logs”似乎只显示有关调用了哪些URL的信息,但没有应用程序将显示的任何调试信息。如中所述,如果希望日志显示在控制台中,则应使用上下文
界面来记录日志,而不是日志
c := appengine.NewContext(r)
c.Infof("Requested URL: %v", r.URL)
必须在其他方法调用中传递相同的上下文对象。
以下是一个例子:
func handleSign(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
if err := r.ParseForm(); err != nil {
writeError(c, err)
return
}
}
func writeError(c appengine.Context, err os.Error) {
c.Errorf("%v", err)
}
如果您正在使用新的应用程序引擎包,请在自述文件中:
- 以前在
appengine.Context
上的日志记录方法现在是google.golang.org/appengine/log
所以你应该使用
c := appengine.NewContext(r)
log.Infof(c, "Requested URL: %v", r.URL)
是应该传递上下文,还是根据需要创建一个新的上下文?@NickSiderakis它目前并不重要,因为它在SDK和生产环境中都被缓存。如果调试一个没有请求URL的函数,会发生什么情况@应用程序引擎上的hendry每个函数调用都以某种方式源自HTTP请求,您是否有发现并非如此的特定示例?在任何应用程序引擎运行时都不可能在请求上下文之外进行日志记录。系统只支持与请求相关的日志。为什么您需要编写一个单独的函数,而不是简单地使用c.Errorf(“%v”,err)?此外,os.Error是古老的(pre-Go 1)。@mihai我认为这只是一个示例,说明如果您必须调用另一个方法,您将传递上下文。无论如何,这是对Nick Siderakis评论的回应,所以我不知道为什么这是一个答案。