c.Infof undefined(类型context.Context没有字段或方法Infof)google.golang.org/appengine/log错误

时间:2015-03-20 14:25:32

标签: google-app-engine go

在Go Runtime中,我使用方法c.Infof来记录消息,但是无法编译时出现以下错误 c.Infof undefined(类型context.Context没有字段或方法Infof) 。 错误清楚地表明从 c:= appengine.NewContext(r) 返回的应用引擎上下文的类型为 context.Context 并且它没有方法 c.Infof 。但与此相反,https://godoc.org/google.golang.org/appengine/log中的文档表明此方法存在。另一点要注意,该方法存在于" appengine"返回的上下文中。 (import" appengine")包,这似乎不存在于新包 google.golang.org/appengine 返回的上下文中,在 " google.golang.org/appengine"返回的类型为context.Context的新上下文中 c.Infof 等效;

1 个答案:

答案 0 :(得分:3)

包文档中的示例不正确。

使用log包函数写入App Engine日志。以下是更正后的示例:

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)
}

包文档中的示例是从App Engine Classic包中复制的,但未更新以使用新功能。我建议将此报告给App Engine团队。