Google app engine 为什么谷歌云日志显示响应为200,同时将日志条目标记为错误?

Google app engine 为什么谷歌云日志显示响应为200,同时将日志条目标记为错误?,google-app-engine,google-cloud-platform,google-cloud-logging,Google App Engine,Google Cloud Platform,Google Cloud Logging,下面是谷歌云控制台日志的屏幕截图。它显示从我的服务器调用/get_用户时出错。但是,响应状态为200,这意味着成功。这怎么可能?还有,实际的错误是什么?下面的任何一行都没有给出任何类似于错误消息的信息 { httpRequest:{ 现状:200 } 插入:“59f27485000f32ab85505e70” 标签:{ 克隆id:“00C61B17C384E485A095752C23B4277D184439C104AE542BD367F2B52DF046B21A56584C7D” } 日志名

下面是谷歌云控制台日志的屏幕截图。它显示从我的服务器调用/get_用户时出错。但是,响应状态为200,这意味着成功。这怎么可能?还有,实际的错误是什么?下面的任何一行都没有给出任何类似于错误消息的信息

{
httpRequest:{
现状:200
}
插入:“59f27485000f32ab85505e70”
标签:{
克隆id:“00C61B17C384E485A095752C23B4277D184439C104AE542BD367F2B52DF046B21A56584C7D”
}
日志名:“projects/villagethegame111/logs/appengine.googleapis.com%2f请求日志”
操作:{
第一:对
id:“59F2748500FF00FF5DBAE8F3B5AD0001737E76696C6C61676574686567616D653131000170726F643230313730393233000100”
最后:是的
制作人:“appengine.googleapis.com/request\u id”
}
原型有效载荷:{
@类型:“type.googleapis.com/google.appengine.logging.v1.RequestLog”
姑息:“1.9.54”
appId:“s~维拉格特加梅111”
费用:8.0801e-8
结束时间:“2017-10-26T23:49:25.076502Z”
完成:对
第一:对
主持人:“villagethegame111.appspot.com”
httpVersion:“HTTP/1.1”
实例ID:“00C61B17C384E485A095752C23B4277D184439C104AE542BD367F2B52DF046B21A56584C7D”
instanceIndex:-1
ip:“38.102.224.170”
延迟:“0.052508s”
行:[
0: {
日志信息:“200正常”
严重性:“错误”
时间:“2017-10-26T23:49:25.068980Z”
}
]
百万周期:“29”
方法:“获取”
请求ID:“59F2748500FF00FF5DBAE8F3B5AD0001737E76696C61676574686567616D653131000170726F643230313730393233000100”
资源:“/api/get\u用户”
回答:“272”
开始时间:“2017-10-26T23:49:25.023994Z”
现状:200
urlMapEntry:“village.api.root”
用户代理:“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_13_0)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/61.0.3163.100 Safari/537.36”
版本ID:“prod20170923”
}
接收时间戳:“2017-10-26T23:49:26.000113484Z”
资源:{
标签:{
模块id:“默认值”
项目编号:“villagethegame111”
版本号:“prod20170923”
区域:“us14”
}
类型:“gae_应用程序”
}
严重性:“错误”
时间戳:“2017-10-26T23:49:25.023994Z”

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

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

您可以在中看到这方面的说明(记录级别为
INFO
,而不是
ERROR


另请参见:

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

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

您可以在中看到这方面的说明(记录级别为
INFO
,而不是
ERROR


另请参见:

双感叹号图标
通常*表示在请求过程中记录了超过日志级别为“错误”的日志消息

已记录此类消息的事实并不一定意味着响应将具有错误状态代码(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
语句和一些
警告的输出也将记录为错误级别消息。

双感叹号图标
通常*表示在请求过程中记录了超过日志级别为“错误”的日志消息

已记录此类消息的事实并不一定意味着响应将具有错误状态代码(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
语句和一些
警告的输出也将记录为错误级别消息