透過 Ruby 記錄應用程式事件

這部分 Bookshelf 應用程式教學課程說明應用程式如何納入詳細的記錄功能,協助偵測、除錯及監控潛在問題。記錄應用程式事件有助您在開發應用程式期間和正式推出應用程式後辨識及解決問題。

完整的教學課程內容涵蓋了數個頁面的篇幅,本頁面屬於其中一個單元。如要從頭開始並閱讀設定操作說明,請前往 Ruby Bookshelf 應用程式頁面。

安裝依附元件

前往 getting-started-ruby/5-logging 目錄,並輸入下列指令:

bundle install

設定

  1. 複製範例設定檔。

    cp config/settings.example.yml config/settings.yml
    
  2. 使用您在驗證使用者一節中的方法,編輯 settings.yml 檔案。

    比方說,假設您的網頁應用程式用戶端 ID 是 XYZCLIENTID、用戶端密鑰是 XYZCLIENTSECRET,專案名稱是 my-project,Cloud Storage 值區名稱是 my-bucket,那麼您 settings.yml 檔案的預設部分會如下所示:

    default: &default
      project_id: my-project
      gcs_bucket: my-bucket
      oauth2:
        client_id: XYZCLIENTID
        client_secret: XYZCLIENTSECRET
    
  3. 複製範例 database 檔案。

    cp config/database.example.yml config/database.yml
    
  4. 將範例應用程式設為使用您在本教學課程的使用結構化資料部分中設定的資料庫。

    Cloud SQL

    • 編輯 database.yml,將檔案中屬於 Cloud SQL 的各行,取消註解。

       mysql_settings: &mysql_settings
         adapter: mysql2
         encoding: utf8
         pool: 5
         timeout: 5000
         username: [MYSQL_USER]
         password: [MYSQL_PASS]
         database: [MYSQL_DATABASE]
         socket: /cloudsql/[YOUR_INSTANCE_CONNECTION_NAME]
      
      • [MYSQL_USER][MYSQL_PASS] 改成您先前建立的 Cloud SQL 執行個體使用者名稱和密碼。

      • [MYSQL_DATABASE] 改成您先前建立的資料庫名稱。

      • [YOUR_INSTANCE_CONNECTION_NAME] 改成您 Cloud SQL 執行個體的 Instance Connection Name

    • 執行遷移作業。

      bundle exec rake db:migrate
      

    PostgreSQL

    • 編輯 database.yml,將檔案中屬於 PostgreSQL 的各行,取消註解;並將 your-postgresql-* 預留位置改成您的 PostgreSQL 執行個體和資料庫值。例如,假設您的 IPv4 位址為 173.194.230.44,使用者名稱為 postgres,密碼為 pword123,資料庫名稱為 bookshelf。那麼您 database.yml 檔案的 PostgreSQL 部分會如下所示:

      # PostgreSQL Sample Database Configuration
      # ----------------------------------------
        adapter: postgresql
        encoding: unicode
        pool: 5
        username: postgres
        password: pword123
        host: 173.194.230.44
        database: bookshelf
      
    • 建立所需的資料庫和資料表。

      bundle exec rake db:create
      bundle exec rake db:migrate
      

    Cloud Datastore

    • 編輯 database.yml,將檔案中屬於 Cloud Datastore 的各行,取消註解。將 your-project-id 改成您的 Google Cloud Platform 專案 ID。例如,假設您的專案 ID 是 my-project:那麼您 database.yml 檔案的 Cloud Datastore 部分會如下所示:

      # Google Cloud Datastore Sample Database Configuration
      # ----------------------------------------------------
      dataset_id: my-project
      
    • 執行 Rake 工作,為 Cloud Datastore 複製範例專案檔案。

      bundle exec rake backend:datastore
      

在本機電腦執行應用程式

  1. 啟動本機網路伺服器。

    bundle exec rails server
    
  2. 在網路瀏覽器中,輸入下列網址:

    http://localhost:3000

如要離開本機網路伺服器,請按下 Control+C 鍵。

將應用程式部署至 App Engine 彈性環境

  1. 編譯 JavaScript 資產以用於實際工作環境。

    RAILS_ENV=production bundle exec rake assets:precompile
    
  2. 部署範例應用程式。

    gcloud app deploy
    
  3. 在網路瀏覽器中,輸入下列網址。

    https://[YOUR_PROJECT_ID].appspot.com
    

若您更新了應用程式,您可以輸入第一次部署應用程式時使用的指令來部署更新版本。新部署會為您的應用程式建立新版本,並將這個新版本晉升為預設版本。應用程式的較舊版本和相關聯的 VM 執行個體都會保留下來。請注意,這些應用程式版本和 VM 執行個體全部都是計費資源。

您可以刪除應用程式的非預設版本來降低費用。

如何刪除應用程式版本:

  1. 前往 GCP 主控台的「App Engine Versions」(App Engine 版本) 頁面。

    前往版本頁面

  2. 找到您要刪除的非預設應用程式版本,然後點選旁邊的核取方塊。
  3. 按一下頁面頂部的 [刪除] 按鈕, 刪除應用程式版本。

如需有關清除計費資源的完整資訊,請參閱本教學課程最後一個步驟的清除所用資源一節。

應用程式結構

下圖顯示當應用程式部署至 App Engine 彈性環境時,應用程式會如何處理記錄。

記錄範例結構 - App Engine 彈性環境

查看記錄

Bookshelf 應用程式在執行時,會寫入已收集並在 Google Cloud Platform 主控台可供使用的記錄資料。您可以使用 GCP 主控台中的記錄監控工具直接分析記錄。如需更詳細的數據分析,您也可以使用 GCP 主控台將應用程式的記錄串流或匯入至 BigQuery,或將這些記錄匯出至 Cloud Storage 值區

GCP 主控台中的記錄

瞭解程式碼

Rails 包含功能強大的可設定記錄系統。App Engine 彈性環境會在特定目錄中尋找記錄,而 Bookshelf 應用程式會設定 Rails,將記錄放在該目錄中。

if Dir.exist? "/var/log/app_engine/custom_logs"
  config.logger = ActiveSupport::TaggedLogging.new Logger.new("/var/log/app_engine/custom_logs/application.log")
end

除了 Rails 提供的預設訊息以外,您還可使用 Rails 記錄器物件記錄任何所需內容。

logger.debug "Debug message."
logger.info "Infomational."
logger.fatal "Fatal error."
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁