콘솔로 이동

로그 작성 및 보기

Logging은 코드 디버깅 및 모니터링을 하는 데 중요한 도구입니다. Cloud Functions에서는 웹 개발 시에 사용하는 동일한 console 객체를 제공합니다.

로그 작성하기

간단한 로그

함수에서 로그 줄을 내보내려면 console.logconsole.error 등의 표준 자바스크립트 로깅 호출을 사용합니다.

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • console.log() 명령어의 로그 수준은 INFO입니다.
  • console.info() 명령어의 로그 수준은 INFO입니다.
  • console.warn() 명령어의 로그 수준은 ERROR입니다.
  • console.error() 명령어의 로그 수준은 ERROR입니다.
  • 내부 시스템 메시지의 로그 수준은 DEBUG입니다.

맞춤 StackDriver 로그

Cloud Functions 로그는 StackDriver Logging에서 지원합니다. Node.js용 StackDriver Logging 라이브러리를 사용해 구조화된 데이터로 이벤트를 기록하면 분석 및 모니터링을 더 쉽게 수행할 수 있습니다.

const { Logging } = require('@google-cloud/logging');
// ...

// Instantiate the StackDriver Logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};
// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

로그 보기

Cloud 함수의 로그는 Firebase 콘솔, Stackdriver Logging UI 또는 firebase 명령줄 도구를 통해 볼 수 있습니다.

Firebase CLI 사용

firebase 도구로 로그를 보려면 functions:log 명령어를 사용합니다.

firebase functions:log

특정 함수의 로그를 보려면 인수로 함수 이름을 제공합니다.

firebase functions:log --only <FUNCTION_NAME>

모든 로그 보기 옵션은 functions:log 도움말을 확인하세요.

firebase help functions:log

Firebase 콘솔 사용

Firebase 콘솔에서 Cloud Functions의 로그를 확인할 수 있습니다.

Stackdriver Logging UI 사용

Stackdriver Logging UI에서 Cloud 함수의 로그를 확인할 수 있습니다.

로그 분석

StackDriver Logging은 Cloud Functions를 모니터링할 때 사용할 수 있는 강력한 로그 분석 도구 모음을 제공합니다. 이 도구는 특히 맞춤 로깅과 함께 사용할 경우 효과적입니다.

로그 기반 측정항목

StackDriver Logging UI에서 고급 필터 필드를 사용해 로그 범위를 분석할 함수로 좁힌 후 필터 제출을 클릭해 로그를 필터링합니다. 예를 들어 단일 함수의 로그만 분석할 수 있습니다.

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

맞춤 JSON 페이로드를 사용해 이벤트를 기록한 경우 제공했던 키와 값을 사용해 필터링할 수 있습니다.

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

로그를 필터링한 후 로그 기반 측정항목을 사용해 로그를 분석하면 됩니다. 측정항목 만들기 버튼을 클릭해 측정항목 편집기를 열고 측정항목 유형을 선택합니다.

  • 카운터 측정항목: 필터와 일치하는 로그 항목의 개수를 셉니다. 예를 들어 특정 이벤트가 발생하는 횟수를 집계할 수 있습니다.
  • 분산 측정항목: 필터와 일치하는 로그 항목의 숫자 데이터를 누적합니다. 예를 들어 함수에 있는 특정 연산의 지연 시간을 추적할 수 있습니다.

함수의 console.log() 등에서 얻는 텍스트 기반 로그의 경우 정규 표현식을 사용해 textPayload 필드에서 값과 라벨을 추출할 수 있습니다. 구조화된 데이터가 있는 맞춤 로그는 jsonPayload 필드의 데이터에 직접 액세스할 수 있습니다.

차트 및 알림

로그 기반 측정항목을 만들어 함수를 측정한 후에는 이 측정항목을 바탕으로 차트와 알림을 만들 수 있습니다. 예를 들어 시간에 따른 지연 시간을 시각화하는 차트를 만들거나 특정 오류가 과도하게 발생할 경우 알려주는 알림을 만들 수 있습니다.

차트 및 알림 정책에서 로그 기반 측정항목을 사용하는 자세한 방법은 차트 및 알림 만들기를 참조하세요.