로그 메시지 보기

Snowsight 를 통해 또는 로그 항목이 저장된 이벤트 테이블을 쿼리하여 로그 메시지를 볼 수 있습니다.

참고

로그 메시지를 사용하기 전에 원격 분석 데이터 수집을 활성화 해야 합니다.

Snowsight 의 로그 항목 보기

참고

로깅 및 추적에 대한 Snowsight 지원은 모든 계정에서 미리 보기 기능으로 제공됩니다.

Snowsight 를 사용하여 이벤트 테이블에 캡처된 로그 데이터를 볼 수 있습니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Monitoring » Traces and Logs 를 선택합니다.

  3. Traces & Logs 페이지에서는 다음 작업을 수행할 수 있습니다.

    • 표시되는 행을 필터링하려면 페이지 상단의 드롭다운 메뉴를 사용합니다. 다음을 기준으로 필터링할 수 있습니다.

      • 항목이 기록된 날짜 범위

      • 항목을 내보낸 코드를 실행하는 Snowflake 사용자 이름

      • 로그 항목 심각도

      • 로그 항목을 내보낸 코드의 프로그래밍 언어

    • 표시되는 데이터에서 특정 기간별로 항목을 필터링하려면 기간을 나타내는 그래프 막대를 선택합니다.

    • 행을 정렬하려면 정렬 기준으로 사용할 열의 이름을 선택합니다.

    • Details 패널에서 항목에 대한 자세한 내용을 보려면 해당 항목의 행을 선택합니다.

      이 패널에서는 이벤트 테이블에 저장된 자세한 정보를 볼 수 있습니다. 다음 테이블은 패널의 값을 설명합니다.

      세부 정보

      설명

      기록 유형

      선택한 행이 나타내는 이벤트 유형입니다. RECORD_TYPE 열 값에서 검색됩니다.

      데이터베이스

      항목을 내보낸 코드가 포함된 데이터베이스의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.database.name 값에서 검색됩니다.

      스키마

      항목을 내보내는 코드가 포함된 스키마의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.schema.name 값에서 검색됩니다.

      심각도

      로그 항목의 심각도입니다. RECORD 열 severity_text 값에서 검색됩니다.

      쿼리 ID

      로그 항목이 내보내진 쿼리의 ID입니다. RESOURCE_ATTRIBUTES 열 snow.query.id 값에서 검색됩니다.

      오브젝트

      내보낸 로그 항목의 소스 이름(예: 함수 또는 프로시저)입니다. RESOURCE_ATTRIBUTES 열 snow.executable.name 값에서 검색됩니다.

      웨어하우스

      이벤트를 생성한 쿼리를 실행하는 웨어하우스의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.warehouse.name 값에서 검색됩니다.

      소유자

      세션에서 기본 역할의 이름입니다. RESOURCE_ATTRIBUTES 열 snow.session.role.primary.name 값에서 검색됩니다.

      로그 텍스트

      로그 메시지 텍스트입니다. VALUE 열 값에서 검색됩니다.

이벤트 테이블에 대한 로그 항목 쿼리

기록된 메시지에 액세스하려면 이벤트 테이블에서 SELECT 명령을 실행합니다.

이벤트 테이블에는 다음을 포함하여 로깅된 메시지에 대한 정보를 캡처하는 미리 정의된 열 세트가 있습니다.

  • 메시지가 수집된 타임스탬프

  • 로그 이벤트가 생성된 클래스의 이름과 같은 로그 이벤트의 범위

  • 데이터베이스, 스키마, 사용자, 웨어하우스 등 로그 이벤트 소스

  • 로그의 심각도 수준

  • 로그 메시지

이벤트 테이블 구조에 대한 참조 정보는 이벤트 테이블 열 섹션을 참조하십시오.

다음 섹션에서는 예제 데이터를 사용하여 이벤트 테이블에서 로그 메시지 데이터를 쿼리하는 방법을 설명합니다.

수집된 데이터

다음 예제의 출력에서는 두 개의 개별 처리기(하나는 Scala, 다른 하나는 Python으로 작성됨)에 대해 로그 메시지가 캡처된 후 이벤트 테이블에서 선택한 일부 열의 내용을 보여줍니다.

로그 메시지 데이터를 수집하는 이벤트 테이블 열에 대한 참조 정보는 로그의 데이터 섹션을 참조하십시오.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP           | SCOPE                             | RESOURCE_ATTRIBUTES   | RECORD_TYPE | RECORD                       | VALUE                                                      |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Python module.                                |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Python function start.                        |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | { "name": "python_logger" }       | **See excerpt below** | LOG         | { "severity_text": "ERROR" } | Logging an error from Python handler.                      |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:55 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from within the Scala constructor.                 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "INFO" }  | Logging from Scala method start.                           |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:12:56 | { "name": "ScalaLoggingHandler" } | **See excerpt below** | LOG         | { "severity_text": "ERROR" } | Logging an error from Scala handler: Something went wrong. |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

RESOURCE_ATTRIBUTES 발췌

다음 JSON에는 이전 출력의 RESOURCE_ATTRIBUTES 열에서 찾을 수 있는 값에서 발췌한 내용이 포함되어 있습니다. 각 snow.executable.name 이름-값 페어는 이전 출력의 다른 행에서 가져온 것입니다.

이 발췌문 다음에 나오는 SELECT 쿼리 코드는 RESOURCE_ATTRIBUTES 열의 값에서 선택합니다.

RESOURCE_ATTRIBUTES 열에는 이벤트 원본에 대한 데이터가 있습니다. 참조 정보는 RESOURCE_ATTRIBUTES 열 섹션을 참조하십시오.

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "ADD_TWO_NUMBERS(A FLOAT, B FLOAT):FLOAT"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}

{
  ...
  "snow.executable.name": "DO_LOGGING():VARCHAR(16777216)"
  ...
}
Copy

SELECT 문을 사용한 쿼리

메시지 데이터를 쿼리할 때 열 내의 특성 값을 선택하려면 다음 형식과 같이 대괄호 표기법 을 사용합니다.

COLUMN_NAME['attribute_name']
Copy

다음 예제의 코드는 Python 처리기의 로그 메시지와 관련된 데이터를 분리하기 위해 앞의 테이블을 쿼리합니다. 이 쿼리에서는 로그 항목 심각도에 대해 severity_text 특성을 선택합니다. 로그 메시지에 대해서는 VALUE 열의 내용을 선택합니다.

처리기를 포함하는 프로시저를 do_logging 이라고 합니다. 쿼리가 작동하려면 프로시저 이름을 모두 대문자로 지정해야 합니다.

SET event_table_name='my_db.public.my_event_table';

SELECT
  TIMESTAMP as time,
  RESOURCE_ATTRIBUTES['snow.executable.name'] as executable,
  RECORD['severity_text'] as severity,
  VALUE as message
FROM
  IDENTIFIER($event_table_name)
WHERE
  SCOPE['name'] = 'python_logger'
  AND RESOURCE_ATTRIBUTES['snow.executable.name'] LIKE '%DO_LOGGING%'
  AND RECORD_TYPE = 'LOG';
Copy

쿼리 결과

다음 예제의 출력은 쿼리 결과를 보여줍니다.

----------------------------------------------------------------------------------------------------------------
| TIME                | EXECUTABLE                       | SEVERITY   | MESSAGE                                |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO"     | "Logging from Python module."          |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "INFO"     | "Logging from Python function start."  |
----------------------------------------------------------------------------------------------------------------
| 2023-04-19 22:00:49 | "DO_LOGGING():VARCHAR(16777216)" | "ERROR"    | "Logging an error from Python handler" |
----------------------------------------------------------------------------------------------------------------