只能从Google App Engine golang应用程序访问请求日志

时间:2015-05-31 00:50:45

标签: google-app-engine logging go

我有一个GAE golang应用程序,其日志语句类似于:

func LogDebugMessage(req *http.Request) {
  context := appengine.NewContext(req)
  c.Debugf("#%d Debugging Here.", 1)
}

如何访问c.Debugf调用生成的日志消息?

appcfg.py request_logs和GAE控制台(https://console.developers.google.com/project/.../logs)似乎都只有HTTP请求日志。

还有其他工具可以请求GAE上下文生成的日志吗?

1 个答案:

答案 0 :(得分:1)

有两种日志:请求日志,它们由平台自动为所有请求生成,并包含请求详细信息(如时间戳,客户端IP,用户代理,状态代码,服务时间,实例) id等)和应用程序日志,这是context.Debugf()context.Warningf()context.Infof()context.Errorf()context.Criticalf()方法调用的结果

应用程序日志附加到(或与之关联)请求(请求日志记录),调用它们的请求(在提供请求期间)。

可以在管理控制台的日志页面或开发人员控制台上查看请求(和应用程序)日志。 管理控制台和开发人员控制台都会显示请求和应用程序日志记录。请注意,在Admin和Developer控制台上,您必须单击日志记录才能展开它们。展开请求日志后,将显示从该请求完成的所有应用程序日志记录。

如果您还想下载应用程序日志,可以为--include_all工具指定appcfg.py参数。

以编程方式,您可以查询请求日志,有关详细信息,请参阅Logs Go API Overview。这是Log package参考。

查询请求日志时,结果为log.Record值。这是struct,其中包含AppLogs字段,该字段是log.AppLog的一个切片。此AppLog类型(它也是struct)描述了由例如context.Debugf()制作的应用程序日志。 AppLog来电。

type AppLog struct { Time time.Time Level int Message string } 类型如下所示:

Message

string是格式化日志消息的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 { c.Infof("Done processing results") break } if err != nil { c.Errorf("Failed to retrieve next log: %v", err) break } // Do something with record // Process Application logs: for _, ap := range record.AppLogs { msg := ap.Message // msg is an application log text message } } 结果。

以下是如何查询日志记录的示例,包括应用程序日志:

enterClicked()