로그 지점 다루기

Cloud Debugger에서 디버깅을 설정하고 앱을 배포하거나 시작한 후에는 소스 콘솔에서 로그 지점을 추가할 수 있습니다.

로그 지점 개요

로그 지점을 사용하면 일반적인 서비스 기능을 다시 시작하거나 방해하지 않고 실행 중인 서비스에 로깅을 삽입할 수 있습니다. 인스턴스가 로그 지점 위치에서 코드를 실행할 때마다 Debugger가 메시지를 로깅합니다. 로그 출력은 대상 환경의 해당 로그에 전송됩니다. 예를 들어 App Engine에서는 출력이 Cloud Logging의 요청 로그로 전송됩니다.

로그 지점은 생성 후 24시간 동안 또는 삭제되거나 서비스가 다시 배포될 때까지 활성 상태로 유지됩니다.

디버그 로그 지점 추가

  1. Google Cloud Console에서 Cloud Source Repositories를 엽니다.

    Cloud Source Repositories 열기

    모든 저장소 페이지가 열립니다. 또는 내 소스 뷰를 열어도 됩니다.

  2. 저장소 이름을 클릭합니다.

  3. 보려는 소스 코드가 포함된 파일로 이동합니다.

  4. 소스 코드 위치의 줄 번호를 클릭합니다.

    로그 지점 위치 선택

  5. 메시지가 표시되면 로그 지점을 추가할 앱을 선택합니다.

    로그 지점 애플리케이션 선택

  6. 로그 지점 만들기를 클릭합니다.

    로그 지점 만들기

  7. 메시지가 표시되면 로그 지점 조건과 메시지를 입력합니다.

    로그 지점 만들기

  8. 추가를 클릭합니다.

    로그 지점을 추가한 후에는 표현식이 소스 콘솔의 파일 뷰에 인라인으로 나타납니다. 로그 지점을 수정하려면 마우스 포인터를 수정할 로그 지점 위에 놓고 수정을 클릭합니다.

로그 지점 조건

로그 지점 조건은 간단한 표현식이며 로그 지점이 로깅되려면 이 조건은 true로 평가되어야 합니다. 로그 지점 조건은 로그 지점이 만료되거나 삭제될 때까지 인스턴스에서 코드 줄이 실행될 때마다 평가됩니다.

조건은 논리 연산자를 포함할 수 있는 완전한 부울 표현식입니다.

travelAccessory == "Towel"
ultimateAnswer <= 42
travelAccessory == "Towel" && ultimateAnswer <= 42

로그 지점 메시지

로그 지점 메시지로 출력에 로깅되는 항목을 결정합니다. 표현식을 사용하면 원하는 값을 평가하고 로깅할 수 있습니다. {myObj.myFunc()} 또는 {a + b}와 같은 중괄호 사이에 있는 메시지 내용은 출력에 있는 해당 표현식의 값으로 대체됩니다. 위의 예시에 있는 User {name} scored {newScore.score} 메시지는 User user1 scored 99와 비슷한 출력을 로깅합니다.

표현식에 다음 언어 기능을 사용할 수 있습니다.

자바

다음을 포함한 대부분의 자바 표현식이 지원됩니다.
  • 로컬 변수: a == 8
  • 숫자 및 부울 연산: x + y < 20
  • 인스턴스 및 정적 필드: this.counter == 20, this.myObj.isShutdown, myStatic 또는 com.mycompany.MyClass.staticMember
  • 등호 연산자가 포함된 문자열 비교: myString == "abc"
  • 함수 호출. 읽기 전용 함수만 사용할 수 있습니다. 예를 들어 StringBuilder.indexOf()는 지원되지만 StringBuilder.append()는 지원되지 않습니다.
  • 정규화된 유형으로 유형 cast 변환: ((com.myprod.ClassImpl) myInterface).internalField

다음 언어 기능은 지원되지 않습니다.

  • Integer와 같은 unboxing 숫자 유형. 대신 myInteger.value를 사용하세요.

Python

다음을 포함한 대부분의 Python 표현식이 지원됩니다.
  • 로컬 및 전역 변수 읽기
  • 배열, 목록, 슬라이스, 사전, 객체에서 읽기
  • 단순 메서드 호출

다음 언어 기능은 지원되지 않습니다.

  • 새 객체를 할당하거나 복잡한 구조를 사용하는 함수 호출
  • 표현식 내부에 새 객체 만들기

Go(베타)

다음을 포함한 대부분의 Go 표현식 구문이 지원됩니다.
  • 로컬 및 전역 변수 읽기
  • 배열, 슬라이스, 맵, 구조체에서 읽기

다음 언어 기능은 지원되지 않습니다.

  • 인터페이스 값에서 읽기
  • 유형 변환 및 복합 리터럴
  • len 이외의 함수 호출

출력 보기

로그 지점 출력은 대상 환경의 해당 로그에 전송됩니다.

App Engine

App Engine 앱에 설정된 로그 지점은 Logging의 요청 로그에 출력을 전송합니다.

로그 패널 또는 전용 로그 뷰어에서 로그를 볼 수 있습니다.

Compute Engine

Compute Engine 앱에 설정된 로그 지점은 일반적인 로그 구문과 같은 위치에 출력을 전송합니다. 예를 들어 Python에서 기본 로깅 모듈은 stdout에 출력을 전송하지만 특정 파일에 쓰도록 구성할 수 있습니다.

이러한 로그를 Logging으로 전달하도록 Logging 에이전트를 설정하여 Logging의 로그 뷰어에서 로그를 볼 수 있습니다.

로그 지점 삭제

로그 지점은 24시간 후에 비활성화되고 메시지 로깅이 중지되며 30일 후에는 자동으로 삭제됩니다. 로그 지점을 수동으로 삭제해도 되지만, 이 경우 로깅이 중지되고 나중에 참조할 수 있는 기록에서도 삭제됩니다. 그러나 로그 지점을 삭제해도 이미 생성된 로그 메시지는 삭제되지 않습니다.

로그 지점을 삭제하려면 다음 프로세스를 따르세요.

GCP Console의 하단 창에 있는 로그 지점 탭에서 마우스 포인터를 로그 지점 위에 놓은 다음 삭제를 클릭합니다.

로그 지점 삭제

다음 단계