使用 Python 指令碼寫入及查詢記錄項目

Python 適用的 Cloud Logging 用戶端程式庫可讓您以程式輔助方式寫入、查詢及管理記錄項目,以便監控應用程式及排解相關問題。在本快速入門導覽課程中,您將使用 Python 指令碼寫入、查看及刪除記錄項目,並設定接收器,將記錄轉送至 Cloud Storage bucket。除了 Cloud Storage bucket 之外,Logging 還可將記錄項目轉送至 BigQuery 資料集、Pub/Sub、Logging bucket 和其他 Google Cloud 專案。

事前準備

您必須擁有已啟用計費功能的 Google Cloud 專案,才能完成這項快速入門導覽課程。如果您沒有 Google Cloud 專案,或 Google Cloud 專案未啟用計費功能,請按照下列步驟操作:
  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  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. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  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. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

本快速入門導覽課程會使用 Cloud Logging 和 Cloud Storage。使用這些資源會產生費用。完成本快速入門導覽課程後,您可以刪除建立的資源,避免繼續計費。詳情請參閱本頁的「清除所用資源」一節。

必要的角色

如要取得建立、列出及刪除記錄項目和 Cloud Storage bucket 所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

記錄寫入者 (roles/logging.logWriter) 和記錄檢視器 (roles/logging.viewer) 角色包含建立及列出記錄項目的權限。如要刪除記錄項目,請授予 Logging 管理員 (roles/logging.admin) 角色,該角色具備建立、列出及刪除記錄項目的權限。請注意,Logging 管理員 (roles/logging.admin) 角色也具備在 Logging 中執行所有動作的權限。

開始使用

您可以使用 Cloud Shell 環境或一般 Linux 環境完成這項快速入門導覽課程。Cloud Shell 已預先安裝 Python。

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 專案的身分與存取權管理權限。在下列步驟中,您將為Google Cloud 專案建立服務帳戶,然後產生檔案並下載至 Linux 工作站。

    1. 前往 Google Cloud 控制台的「Service Accounts」(服務帳戶) 頁面:

      前往「Service Accounts」(服務帳戶)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。

    2. 選取快速入門導覽課程 Google Cloud 專案,然後按一下「Create Service Account」(建立服務帳戶):

      • 輸入帳戶名稱。
      • 輸入帳戶說明。
      • 點按「Create and continue」(建立並繼續)。
    3. 按一下「選取角色」欄位,然後選取「Logging 管理員」。

    4. 按一下「Done」(完成),即完成建立服務帳戶。

    5. 建立金鑰檔案,並下載至您的工作站:

      • 按一下服務帳戶的 「More options」(更多選項),然後選取「Manage keys」(管理金鑰)。
      • 在「Keys」(金鑰) 窗格中,按一下「Add key」(新增金鑰)。
      • 按一下「Create new key」(建立新金鑰)。
      • 在「金鑰類型」部分,選取「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/GoogleCloudPlatform/python-docs-samples
    

    目錄 samples/snippets 包含本快速入門導覽課程中使用的兩個指令碼:

    • snippets.py 可讓您管理記錄中的項目。
    • export.py 可讓您管理記錄匯出作業。
  2. 切換至 snippets 目錄:

    cd logging/samples/snippets
    

寫入記錄項目

snippets.py 指令碼會使用 Python 用戶端程式庫,將記錄項目寫入 Logging。在指令列指定 write 選項時,指令碼會寫入下列記錄項目:

  • 具有非結構化資料且未指定任何嚴重性等級的項目。
  • 具有非結構化資料且嚴重性等級為 ERROR 的項目。
  • 具有 JSON 結構化資料且未指定任何嚴重性等級的項目。

如要將新的記錄項目寫入記錄檔 my-log,請使用 write 選項執行 snippets.py 指令碼:

python snippets.py my-log write

查看記錄項目

如要在 Cloud Shell 中查看記錄項目,請執行 snippets.py 指令碼並加上 list 選項:

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 需要一些時間才能接收及處理記錄項目。

您也可以使用 Logs Explorer 查看寫入的記錄項目。詳情請參閱「使用 Logs Explorer 查看記錄檔」。

刪除記錄項目

如要刪除記錄 my-log 中的所有記錄項目,請執行 snippets.py 指令碼,並加上 delete 選項:

python snippets.py my-log delete

指令完成後,會傳回下列結果:

Deleted all logging entries for my-log。

路徑記錄

在本節中,執行以下操作:

  • 建立 Cloud Storage bucket,做為資料的目的地。
  • 建立將新記錄項目複製到目的地的接收器。
  • 更新 Cloud Storage bucket 的權限。
  • 將記錄項目寫入 Logging。
  • 您可以視需要驗證 Cloud Storage bucket 的內容。

建立目的地

本快速入門導覽課程的匯出目的地是 Cloud Storage bucket。如要建立 Cloud Storage bucket,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Bucket」頁面:

    前往「Buckets」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Cloud Storage」的結果。

  2. 按一下「建立值區」。
  3. 輸入 bucket 的名稱。本快速入門導覽課程使用 myloggingproject-1 這個名稱。
  4. 在「位置類型」部分,選取「區域」,系統會選取延遲時間最低的 bucket 位置。
  5. 在「設定預設級別」部分選取「Standard」。
  6. 在「存取控管」部分,選取「精細」。
  7. 在「保護工具」部分選取「無」,然後點選「建立」。

建立接收器

接收器是一項規則,可決定 Logging 是否將新收到的記錄項目轉送至目的地。接收器有下列三種屬性:

  • 名稱
  • 目的地
  • 篩選器

如要進一步瞭解接收器,請參閱「關於記錄檔接收器」。

如果新收到的記錄項目符合查詢條件,該記錄項目就會轉送至目的地。

export.py 指令碼會使用 Python 用戶端程式庫建立、列出、修改及刪除接收器。如要建立接收器 mysink,將嚴重性至少為 INFO 的所有記錄項目匯出至 Cloud Storage bucket myloggingproject-1,請執行下列指令:

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

指令碼會傳回下列內容:

Created sink mysink

如要查看接收器,請執行 export.py 指令碼並加上 list 選項:

python export.py list

指令碼會傳回下列內容:

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

更新目的地權限

使用 export.py 指令碼建立接收器時,目的地 (在本例中為 Cloud Storage bucket) 的權限不會遭到修改。您必須變更 Cloud Storage bucket 的權限設定,授予寫入接收器的權限。如要瞭解服務帳戶、存取權範圍和 Identity and Access Management 角色,請參閱「服務帳戶」。

如要更新 Cloud Storage bucket 的權限,請按照下列步驟操作:

  1. 識別接收器的「Writer Identity」(寫入者身分):

    1. 前往 Google Cloud 控制台的「Log Router」(記錄檔路由器) 頁面:

      前往「Log Router」(記錄檔路由器)

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。

      您會看到接收器的摘要表格。

    2. 在表格中找到接收器,依序選取 「Menu」(選單) 和「View sink details」(查看接收器詳細資料)。

    3. 將寫入者身分複製到剪貼簿。

  2. 前往 Google Cloud 控制台的「Bucket」頁面:

    前往「Buckets」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Cloud Storage」的結果。

  3. 如要開啟詳細資料視圖,請按值區名稱。

  4. 選取「權限」,然後按一下「授予存取權」。

  5. 將寫入者身分貼到「New principals」(新增主體) 方塊中。從寫入者身分位址中移除 serviceAccount: 前置字元。

  6. 將「Role」(角色) 設為 Storage Admin,然後點選「Save」(儲存)。

詳情請參閱「設定目的地權限」。

驗證接收器

如要驗證接收器和目的地是否設定正確,請執行下列操作:

  1. 將新的記錄項目寫入記錄檔 my-log:

    python snippets.py my-log write
    
  2. 查看 Cloud Storage bucket 的內容:

    1. 前往 Google Cloud 控制台的「Bucket」頁面:

      前往「Buckets」

      如果您是使用搜尋列尋找這個頁面,請選取子標題為「Cloud Storage」的結果。

    2. 如要開啟詳細資料視圖,請按值區名稱。詳細資料視圖會列出包含資料的資料夾。如果 bucket 中沒有資料,系統會顯示下列訊息:

      There are no live objects in this bucket.

      如「延遲抵達的記錄項目」一節所述,目的地可能需要 2 或 3 小時才會顯示第一批項目,或通知您設定錯誤。

      bucket 收到資料後,詳細資料檢視畫面會顯示類似以下的結果:

      Bucket 內容詳細資料檢視畫面。

    3. 每個資料夾中的資料都會整理為一系列的資料夾,頂層資料夾會標示記錄名稱,然後依序標示年、月和日。如要查看接收器匯出的資料,請按一下資料夾名稱 my-log,然後依序點選年、月和日等子資料夾,直到找到結尾為 json 的檔案為止:

      bucket 內容子資料夾檢視畫面。

    4. JSON 檔案包含匯出至 Cloud Storage bucket 的記錄項目。點選 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 bucket 可能因下列原因而空白:

  • bucket 尚未收到資料。 目的地可能需要 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 控制台的「Project Info」(專案資訊) 窗格中,按一下「Go to project settings」(前往專案設定),然後點選「Shut down」(關閉)。

    • 如要刪除快速入門導覽課程資源:

      1. 執行以下指令以刪除接收器:

        python export.py delete mysink
        
      2. 刪除 Cloud Storage bucket。前往 Google Cloud 控制台,依序點選「Storage」>「Buckets」。勾選 bucket 名稱旁的方塊,然後按一下「Delete」(刪除)。

後續步驟