Python スクリプトを使用してログエントリの書き込みとクエリを行う

このクイックスタートでは、Cloud Logging のいくつかの機能を紹介し、以下の内容の実行方法について説明します。

  • Python スクリプトを使用してログエントリを書き込む。
  • Python スクリプトを使用してログエントリを削除する。
  • Python スクリプトを使用してログエントリを削除する。
  • Cloud Storage バケットにログを転送する。

Logging は、ログエントリを次の宛先にルーティングできます。

  • Cloud Storage バケット
  • BigQuery データセット
  • Pub/Sub
  • Logging バケット
  • Google Cloud プロジェクト

始める前に

このクイックスタートを完了するには、課金が有効になっている Google Cloud プロジェクトが必要です。 Google Cloud プロジェクトがない場合、または Google Cloud プロジェクトに対して課金が有効になっていない場合は、次の操作を行います。
  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  7. Verify that billing is enabled for your Google Cloud project.

  8. このクイックスタートでは、Cloud Logging と Cloud Storage を使用します。これらのリソースを使用すると、費用が発生する可能性があります。このクイックスタートの終了後は、作成したリソースを削除するとそれ以上の請求が発生しなくなります。詳細については、このページのクリーンアップをご覧ください。

    必要なロール

    ログエントリや Cloud Storage バケットを作成、一覧表示、削除するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼してください。

    • ログエントリの作成、一覧表示、削除: Logging 管理者roles/logging.admin
    • Cloud Storage バケットの作成、一覧表示、削除: ストレージ管理者roles/storage.admin

    ロールの付与について詳しくは、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    ログ書き込み(roles/logging.logWriter)とログ閲覧者(roles/logging.viewer)のロールには、ログエントリの作成と一覧表示の権限が含まれています。ログエントリを削除するには、Logging 管理者(roles/logging.admin)ロールを付与してください。このロールには、ログエントリの作成、一覧表示、削除の権限が含まれています。なお、Logging 管理者(roles/logging.admin)ロールは、Logging におけるすべての操作を行う権限も付与することに注意してください。

はじめに

Cloud Shell 環境または一般的な Linux 環境を使用して、このクイックスタートを実行できます。Python は Cloud Shell にプリインストールされています。

Cloud Shell

  1. Cloud Shell を開き、 Google Cloud プロジェクトの構成を確認します。

    1. Google Cloud コンソールで、 [Cloud Shell をアクティブにする] をクリックします。

      Cloud Shell のウィンドウが開き、ウェルカム メッセージが表示されます。

    2. ウェルカム メッセージは、構成された Google Cloud プロジェクト ID を確認表示します。これが、使用する Google Cloud プロジェクトと異なる場合は、PROJECT_ID を実際のプロジェクト ID に置き換えて、次のコマンドを実行します。

      gcloud config set project PROJECT_ID
      

Linux

  1. Python がインストールされ、構成されていることを確認します。Python 開発用にマシンを準備する方法については、Python 開発環境の設定をご覧ください。

  2. Cloud Logging クライアント ライブラリをインストールします。

    pip install --upgrade google-cloud-logging
    
  3. Google Cloud プロジェクトの Identity and Access Management のアクセス許可を設定します。以降の手順では、Google Cloud プロジェクト用のサービス アカウントを作成してから、ファイルを生成して Linux ワークステーションにダウンロードします。

    1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

      [サービス アカウント] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [IAM と管理者] である結果を選択します。

    2. クイックスタート Google Cloud プロジェクトを選択し、[サービス アカウントを作成] をクリックします。

      • アカウント名を入力します。
      • アカウントの説明を入力します。
      • [作成して続行] をクリックします。
    3. [ロールを選択] フィールドをクリックして、[Logging 管理者] を選択します。

    4. [完了] をクリックして、サービス アカウントの作成を完了します。

    5. キーファイルを作成し、ワークステーションにダウンロードします。

      • サービス アカウントに対して [その他のオプション] をクリックし、[鍵の管理] を選択します。
      • [] ペインで、[鍵を追加] をクリックします。
      • [新しい鍵を作成] をクリックします。
      • [キーのタイプ] で [JSON] を選択し、[作成] をクリックします。しばらくすると、次のようなメッセージがウィンドウに表示されます。

        秘密鍵がパソコンに保存されました。

  4. Linux ワークステーションで、環境変数 GOOGLE_APPLICATION_CREDENTIALS をキーファイルのパスに設定して、アプリケーションに認証情報を指定します。例:

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/FILE_NAME.json"
    

    この環境変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定してください。

ソースのクローンを作成する

このクイックスタート用に Cloud Shell を構成するには、次の手順を行います。

  1. GitHub プロジェクト python-logging のクローンを作成します。

    git clone https://github.com/googleapis/python-logging
    

    ディレクトリ samples/snippets には、このクイックスタートで使用する 2 つのスクリプトが含まれています。

    • snippets.py ログのエントリを管理します。
    • export.py ログのエクスポートを管理します。
  2. snippets ディレクトリに移動します。

    cd python-logging/samples/snippets
    

ログエントリを書き込む

snippets.py スクリプトは、Python クライアント ライブラリを使用してログエントリを Logging に書き込みます。コマンドラインで write オプションを指定すると、スクリプトは次のログエントリを書き込みます。

  • 構造化されていないデータがあり、重要度レベルが指定されていないエントリ。
  • 構造化されていないデータがあり、重要度レベルが ERROR のエントリ。
  • JSON 構造化データがあり、重要度レベルが指定されていないエントリ。

新しいログエントリをログ my-log に書き込むには、snippets.py スクリプトを write オプションと実行します。

python snippets.py my-log write

ログエントリを表示する

Cloud Shell でログエントリを表示するには、list オプションを指定して snippets.py スクリプトを実行します。

python snippets.py my-log list

コマンドが完了し、次の結果が表示されます。

Listing entries for logger my-log:
* 2025-11-13T16:05:35.548471+00:00: Hello, world!
* 2025-11-13T16:05:35.647190+00:00: Goodbye, world!
* 2025-11-13T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

結果にエントリが表示されない場合は、コマンドを再試行します。Logging がログエントリを受信して処理するまでには、少し時間がかかります。

ログ エクスプローラを使用して、書き込んだログエントリを表示することもできます。詳細については、ログ エクスプローラを使用してログを表示するをご覧ください。

ログエントリを削除する

my-log ログ内のすべてのログエントリを削除するには、delete オプションを指定して snippets.py スクリプトを実行します。

python snippets.py my-log delete

コマンドが完了し、次の結果が表示されます。

Deleted all logging entries for my-log

ログを転送する

このセクションでは、次の操作を行います。

  • Cloud Storage バケットを作成し、データのエクスポート先として使用します。
  • 新しいログエントリをエクスポート先にコピーするシンクを作成します。
  • Cloud Storage バケットの権限を更新します。
  • Logging にログエントリを書き込みます。
  • 必要に応じて、Cloud Storage バケットの内容を確認します。

エクスポート先を作成する

このクイックスタートのエクスポート先は、Cloud Storage バケットです。Cloud Storage バケットを作成するには、次の操作を行います。

  1. Google Cloud コンソールで [バケット] ページに移動します。

    [バケット] に移動

    このページを検索バーから探す場合は、小見出しが「Cloud Storage」の結果を選択します。

  2. [バケットを作成] をクリックします。
  3. バケットの名前を入力します。このクイックスタートでは、myloggingproject-1 という名前を使用します。
  4. [ロケーション タイプ] で [リージョン] を選択します。これにより、レイテンシが最も低いバケットのロケーションが選択されます。
  5. [デフォルトのクラスを設定する] で [標準] を選択します。
  6. [アクセス制御] で [きめ細かい管理] を選択します。
  7. [保護ツール] で [なし] を選択し、[作成] をクリックします。

シンクを作成する

シンクは、新しく到着したログエントリを Logging からエクスポート先にエクスポートするかどうかを決定するルールです。シンクには次の 3 つの属性があります。

  • 名前
  • エクスポート先
  • フィルタ

シンクの詳細については、ログシンクについてをご覧ください。

新しく到着したログエントリがクエリ条件を満たす場合、そのログエントリは指定された宛先にルーティングされます。

export.py スクリプトは、Python クライアント ライブラリを使用して、シンクの作成、一覧表示、変更、削除を行います。重要度が INFO 以上のすべてのログエントリを Cloud Storage バケット myloggingproject-1 にエクスポートするシンク mysink を作成するには、次のコマンドを実行します。

python export.py create mysink myloggingproject-1 "severity>=INFO"

スクリプトから次の結果が返ります。

Created sink mysink

シンクを表示するには、list オプションを指定して export.py スクリプトを実行します。

python export.py list

スクリプトは次を返します。

mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

エクスポート先の権限を更新する

この場合の宛先である Cloud Storage バケットの権限は、export.py スクリプトを使用してシンクを作成しても変更されません。Cloud Storage バケットの権限の設定を変更して、シンクへの書き込み権限を付与する必要があります。サービス アカウント、アクセス スコープ、Identity and Access Management ロールの詳細については、サービス アカウントをご覧ください。

Cloud Storage バケットの権限を更新するには:

  1. シンクの書き込み ID を特定します。

    1. Google Cloud コンソールで、[ログルーター] ページに移動します。

      [ログルーター] に移動

      検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

      シンクのサマリー テーブルが表示されます。

    2. テーブルでシンクを見つけて、[メニュー] を選択し、[シンクの詳細を表示する] を選択します。

    3. 書き込み ID をクリップボードにコピーします。

  2. Google Cloud コンソールで [バケット] ページに移動します。

    [バケット] に移動

    このページを検索バーから探す場合は、小見出しが「Cloud Storage」の結果を選択します。

  3. 詳細ビューを開くには、バケットの名前をクリックします。

  4. [権限] を選択し、[アクセス権を付与] をクリックします。

  5. 書き込み ID を [新しいプリンシパル] ボックスに貼り付けます。書き込み ID アドレスから serviceAccount: 接頭辞を削除します。

  6. [ロール] を Storage Admin に設定し、[保存] をクリックします。

詳細については、宛先の権限を設定するをご覧ください。

シンクを検証する

シンクとエクスポート先が正しく構成されていることを確認する手順は、次のとおりです。

  1. 新しいログエントリをログ my-log に書き込みます。

    python snippets.py my-log write
    
  2. Cloud Storage バケットの内容を表示します。

    1. Google Cloud コンソールで [バケット] ページに移動します。

      [バケット] に移動

      このページを検索バーから探す場合は、小見出しが「Cloud Storage」の結果を選択します。

    2. 詳細ビューを開くには、バケットの名前をクリックします。詳細ビューには、データが含まれているフォルダが一覧表示されます。バケットにデータがない場合は、次のメッセージが表示されます。

      There are no live objects in this bucket.

      遅れて到着するログエントリで説明されているように、最初のエントリがエクスポート先に表示されるまで、または構成エラーが通知されるまでに 2 ~ 3 時間かかることがあります。

      バケットでデータが受信されると、詳細ビューには次のような結果が表示されます。

      バケットの内容の詳細ビュー。

    3. 各フォルダ内のデータは、ラベル付けされた一連のフォルダに整理されます。最上位のフォルダはログ名で、その後に年、月、日の各フォルダが続きます。シンクによってエクスポートされたデータを表示するには、フォルダ名 my-log をクリックします。その後に json で終わるファイルにたどり着くまで、年、月、日のサブフォルダをクリックします。

      バケットの内容のサブフォルダ ビュー。

    4. JSON ファイルには、Cloud Storage バケットにエクスポートされたログエントリが含まれています。JSON ファイル名をクリックすると、その内容が表示されます。内容は次のようになります。

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      ERROR の重要度は INFO の重要度よりも高いため、文字列「Goodbye、world!」を含むログエントリがシンクのエクスポート先にエクスポートされます。書き込まれたその他のログエントリは、エクスポート先にエクスポートされません。設定されているデフォルト値の重要度レベルは INFO より低いためです。

トラブルシューティング

Cloud Storage バケットが空になっている理由はいくつかあります。

  • バケットはデータを受信していません。最初のエントリがエクスポート先に表示されるまで、または構成エラーが通知されるまでに 2〜3 時間かかることがあります。詳細については、遅れて到着するログエントリをご覧ください。

  • 構成エラーがあります。この場合、次のような件名のメール メッセージが届きます。

     [ACTION REQUIRED] Logging export config error in myloggingproject.

    メールの本文では、構成の問題が説明されています。たとえば、エクスポート先の権限を更新しなかった場合、メールに次のエラーコードが表示されます。

     bucket_permission_denied

    この特定の条件を修正するには、このページのエクスポート先の権限を更新するをご覧ください。

  • シンクの作成後にログエントリが書き込まれませんでした。シンクは、新しく到着したログエントリにだけ適用されます。この状況を修正するには、次のコマンドを実行して新しいログエントリを書き込みます。

     python snippets.py my-log write
    

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。

  1. (省略可)作成したログエントリを削除します。ログエントリを削除しないと、そのエントリは期限切れになり、削除されます。割り当てと上限をご覧ください。

    ログ my-log 内のすべてのログエントリを削除するには、次のコマンドを実行します。

     python snippets.py my-log delete
    
  2. Google Cloud プロジェクトを削除するか、クイックスタート リソースを削除します。

    • Google Cloud プロジェクトを削除するには、Google Cloud コンソールの [プロジェクト情報] ペインで [プロジェクト設定に移動]、[シャットダウン] の順にクリックします。

    • クイックスタート リソースを削除するには:

      1. 次のコマンドを実行してシンクを削除します。

        python export.py delete mysink
        
      2. Cloud Storage バケットを削除します。 Google Cloud コンソールに移動し、[Storage] > [バケット] をクリックします。バケット名の横にあるチェックボックスをオンにして、[削除] をクリックします。

次のステップ