我使用谷歌应用引擎和golang构建了一个简单的网络应用程序。在下面的代码中,我使用fmt.Println两次打印出一些用于调试目的。我没有运行应用程序的问题。一切正常,除了终端上没有打印出来。
func HomeHandler(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
q := datastore.NewQuery("Post").Ancestor(goblogKey(c)).Order("-CreatedOn").Limit(10)
//posts := make([]entity.Post, 0, 10)
var posts []entity.Post
if _, err := q.GetAll(c, &posts); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fmt.Println(string(len(posts)) + "...........")
postList := []dto.Post{}
for _, val := range posts {
newpost := dto.Post{
Post: val,
BodyHTML: template.HTML(val.Body),
}
fmt.Println(val.Title)
postList = append(postList, newpost)
}
page := dto.PageData{Title: "Home", Posts: postList}
templates.ExecuteTemplate(w, "index", page)
}
答案 0 :(得分:10)
在真正的发源环境中,您可以输出任何输出到标准输出 Appengine上下文让您远离日志(您可以在登录管理员页面和控制台操场上查看)。
func HomeHandler(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
c.Debugf("The message: %s", "foo")
...
了解详情:https://developers.google.com/appengine/docs/go/reference#Context
答案 1 :(得分:0)
标准i / o或错误用于与devleoper使用的app服务器通信。在生产系统中,没有使用标准i / o的意义。在生产系统中,日志用于跟踪结果。在app引擎中存在一些限制。像fmt,socket等。
在远程服务器上测试或运行程序时,最好使用日志。