1

아래는 Google Cloud console logging의 스크린 샷입니다. 그것은 내 서버에서/get_user를 호출하는 동안 오류를 보여줍니다. 그러나 응답 상태가 200이면 성공을 의미합니다. 이것이 어떻게 가능한지? 또한 실제 오류는 무엇입니까? 아래 줄 중 아무 것도 원격으로 오류 메시지와 유사한 내용을 제공하지 않습니다.Google Cloud 로깅이 응답 200을 표시하는 동시에 로그 항목에 오류로 태그를 지정하는 이유는 무엇입니까?

enter image description here

{ 
 
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" 
 
}

답변

3

각각의 요청 로그는 응용 프로그램 코드에 의해 생성이 부착 된 ERROR 수준에서 응용 프로그램 로그가있는 경우, 이것은 지극히 정상적인 일 수있다 요청 처리 중. 그리고 애플 리케이션이 요청에 대한 응답을 공식화 할 수있는 한, 물론. 요청 로그에는 첨부 된 모든 앱 로그에서 "최악의"로깅 수준 태그가 지정됩니다.

스냅 샷에 표시된 페이지에서 조금 더 아래로 스크롤하여 해당 요청 로그에 앱 로그가 첨부되어 있는지 확인하십시오.

이 그림은 이 아니고 로깅 수준이 ERRORReading Application Logs on Google App Engine from Developer Console에 있습니다.

은 참조 : Request logs vs application logs

2

이중 느낌표 아이콘 !!은 일반적으로 * 로그 레벨 '오류'와 로그 메시지보다 요청 중에 기록 된 것을 의미한다.

이러한 메시지가 기록되었다고해서 반드시 응답에 오류 상태 코드 (500)가 있다는 것을 의미하지는 않습니다. 요청 처리 코드 내에서 오류 상황이 발생하여 기록되고 처리 될 수 있으므로 오류 수준 메시지가 기록 되더라도 요청은 계속 성공합니다. 예를 들어 : 댄 Cornilescu으로

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) 

는 그의 대답에 언급, 당신은 당신의 스크린 샷에 표시된 데이터 아래에 기록 된 메시지를 볼 수 있어야합니다.

*print 문의 출력과 일부 warnings는 오류 레벨 메시지로 기록됩니다.