오류 신고

오류 수준에서 콘솔에 Error 객체를 로깅하면 Cloud Function에서 Stackdriver Error Reporting으로 오류를 내보낼 수 있습니다.

console.error(new Error('message'));

신고된 오류는 GCP 콘솔의 Stackdriver Error Reporting에서 확인할 수 있습니다. 또한 GCP 콘솔의 함수 목록에서 특정 함수를 선택하면 해당 함수에서 신고된 오류를 확인할 수 있습니다.

함수에 포착되지 않은 오류가 발생하거나 Error 유형의 객체를 명시적으로 예외 발생 처리하는 경우에도 Stackdriver Error Reporting에 오류가 표시됩니다. 하지만 포착되지 않은 오류와 예외가 발생하면 그 이후의 호출이 처음부터 강제 시작됩니다. 따라서 성능을 높이려면 Error 객체를 로깅하는 첫 번째 방법을 사용해야 합니다.

Stackdriver 오류를 내보내지 않는 경우는 다음과 같습니다.

  • Error 객체가 아닌 항목을 예외 발생 처리(예: throw 1;)
  • 정보 수준에서 오류 객체를 로깅(예: console.info(new Error('message'));)
  • Error 객체가 아닌 항목을 로깅(예: console.error('message');)
  • 오류 결과와 함께 정상적인 함수 완료(예: 백그라운드 함수callback('message');, HTTP 함수res.status(500).send('message');)

try-catch 구문의 catch 블록이나 프라미스의 catch 콜백에서 오류를 보고할 때 err 객체의 유형이 이미 형식이 지정된 Error 객체인 경우가 종종 있습니다. Google에서 제공하는 라이브러리를 통해 Google 서비스를 사용하는 경우에는 제공된 err 객체에 바로 로깅하면 됩니다.

Node.js

try {
  // Throw an Error object (to simulate a GCP API failure)
  throw new Error('Error object!');
} catch (err) {
  // err is already an Error object
  console.error(err);
}

제공된 errError 객체인지 확실하지 않다면 다음과 같이 확인할 수 있습니다.

Node.js

try {
  // Throw an unknown error type
  if (someCondition) {
    throw 'Error string!';
  } else {
    throw new Error('Error object!');
  }
} catch (err) {
  // Determine the error type
  if (err instanceof Error) {
    console.error(err);
  } else {
    console.error(new Error(err));
  }
}

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud Functions 문서