ログメッセージの表示

ログメッセージは、 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 コマンドを実行します。

イベントテーブルには、ログされたメッセージに関する情報をキャプチャする、次のような事前定義された列のセットがあります。

  • メッセージがインジェストされたときのタイムスタンプ。

  • ログイベントが作成されたクラスの名前など、ログイベントのスコープ。

  • データベース、スキーマ、ユーザー、ウェアハウスなどを含むログイベントソース。

  • ログの重大度レベル。

  • ログメッセージ。

イベントテーブルの構造に関する参考情報は、 イベントテーブル列 をご参照ください。

次のセクションでは、データ例を使用して、イベントテーブルにログメッセージデータをクエリする方法を説明します。

収集されたデータ

次の例の出力は、2つの個別のハンドラー(1つはScalaで記述され、もう1つは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" |
----------------------------------------------------------------------------------------------------------------