我有一个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上下文生成的日志吗?
答案 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()