In the Go Runtime i used the method c.Infof to log messages , but it fails to compile with the following error c.Infof undefined (type context.Context has no field or method Infof) . The Error clearly tells that the app engine context returned from c := appengine.NewContext(r) is of type context.Context and it doesnt have a method c.Infof on it. But contrary to this the documentation in https://godoc.org/google.golang.org/appengine/log suggests that this method exists . Another point to note , The method existed on the context returned by "appengine" (import "appengine" ) package , and this doesnt seem to exist on the context returned by the new package google.golang.org/appengine , what is c.Infof equivalent on the new Context of type context.Context returned by package "google.golang.org/appengine" ?
1条回答 默认 最新
- dryift6733 2015-03-20 14:55关注
The example in the package documentation is not correct.
Use the log package functions to write to the App Engine log. Here's the corrected example:
c := appengine.NewContext(r) query := &log.Query{ AppLogs: true, Versions: []string{"1"}, } for results := query.Run(c); ; { record, err := results.Next() if err == log.Done { log.Infof(c, "Done processing results") break } if err != nil { log.Errorf(c, "Failed to retrieve next log: %v", err) break } log.Infof(c, "Saw record %v", record) }
The example in the package documentation was copied from the App Engine Classic package, but not updated to use the new functions. I suggest reporting this to the App Engine Team.
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报