1

以下是 Google Cloud 控制台日志记录的屏幕截图。从我的服务器调用 /get_user 时显示错误。但是响应状态是 200,这应该意味着成功。这怎么可能?还有什么是实际错误?下面的所有行都没有给出任何类似于错误消息的东西。

在此处输入图像描述

{
 httpRequest: {
  status:  200   
 }
 insertId:  "59f27485000f32ab85505e70"  
 labels: {
  clone_id:  "00c61b117c384e485a095752c23b4277d1844399c104ae542bd367f2b52df046b21a56584c7d"   
 }
 logName:  "projects/villagethegame111/logs/appengine.googleapis.com%2Frequest_log"  
 operation: {
  first:  true   
  id:  "59f2748500ff00ff5dbae8f3b5ad0001737e76696c6c61676574686567616d65313131000170726f643230313730393233000100"   
  last:  true   
  producer:  "appengine.googleapis.com/request_id"   
 }
 protoPayload: {
  @type:  "type.googleapis.com/google.appengine.logging.v1.RequestLog"   
  appEngineRelease:  "1.9.54"   
  appId:  "s~villagethegame111"   
  cost:  8.0801e-8   
  endTime:  "2017-10-26T23:49:25.076502Z"   
  finished:  true   
  first:  true   
  host:  "villagethegame111.appspot.com"   
  httpVersion:  "HTTP/1.1"   
  instanceId:  "00c61b117c384e485a095752c23b4277d1844399c104ae542bd367f2b52df046b21a56584c7d"   
  instanceIndex:  -1   
  ip:  "38.102.224.170"   
  latency:  "0.052508s"   
  line: [
   0: {
    logMessage:  "200 OK"     
    severity:  "ERROR"     
    time:  "2017-10-26T23:49:25.068980Z"     
   }
  ]
  megaCycles:  "29"   
  method:  "GET"   
  requestId:  "59f2748500ff00ff5dbae8f3b5ad0001737e76696c6c61676574686567616d65313131000170726f643230313730393233000100"   
  resource:  "/api/get_user"   
  responseSize:  "272"   
  startTime:  "2017-10-26T23:49:25.023994Z"   
  status:  200   
  urlMapEntry:  "village.api.root"   
  userAgent:  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"   
  versionId:  "prod20170923"   
 }
 receiveTimestamp:  "2017-10-26T23:49:26.000113484Z"  
 resource: {
  labels: {
   module_id:  "default"    
   project_id:  "villagethegame111"    
   version_id:  "prod20170923"    
   zone:  "us14"    
  }
  type:  "gae_app"   
 }
 severity:  "ERROR"  
 timestamp:  "2017-10-26T23:49:25.023994Z"  
}

4

2 回答 2

3

如果相应的请求日志还具有附加到它的级别的应用程序日志,这可能是完全正常的ERROR,由您的应用程序代码在处理请求期间创建。当然,只要应用程序能够对请求做出响应。请求日志将在附加到它的所有应用程序日志中标记为“最差”的日志记录级别。

只需在快照中显示的页面上向下滚动一点,即可查看是否有应用程序日志附加到该请求日志。

您可以在从 Developer Console 读取 Google App Engine 上的应用程序日志中看到这方面的说明(使用日志记录级别INFO,而不是ERROR)。

另请参阅:请求日志与应用程序日志

于 2017-10-27T03:01:06.413 回答
2

双感叹号图标!!通常*表示在请求期间已记录日志级别为“错误”的日志消息。

已记录此类消息的事实并不一定意味着响应将具有错误状态代码 (500)。在请求处理代码中,可能会遇到、记录和处理错误情况,因此即使记录了错误级别的消息,请求仍然会成功。例如:

class Handler(webapp2.RequestHandler):

    def get(self):
        foo = request.get('foo')
        try:
            upper_foo = foo.upper()
        except AttributeError:
            # foo could be None
            logging.error('Invalid foo: %r', foo)   
            upper_foo = ''
        self.response.write(upper_foo)

正如 Dan Cornilescu 在他的回答中提到的那样,您应该能够在屏幕截图中显示的数据下方看到记录的消息。

*print语句的输出和一些warnings也将被记录为错误级别的消息。

于 2017-10-27T13:46:12.853 回答