記錄伺服器訊息 (即時伺服器) - Amazon GameLift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

記錄伺服器訊息 (即時伺服器)

您可以從日誌檔案中的即時伺服器擷取自訂伺服器訊息。若要了解自訂伺服器的記錄,請參閱 記錄伺服器訊息 (自訂伺服器)

您可以輸出不同類型的訊息至日誌檔案 (請參閱 在伺服器指令碼中記錄訊息)。除了自訂訊息之外,您的即時伺服器也會使用相同的訊息類型輸出系統訊息,並寫入相同的日誌檔案。您可以調整機群的記錄層級,以減少伺服器產生的記錄訊息數量 (請參閱 調整記錄層級)。

重要

每個遊戲工作階段的日誌檔案大小都有限制 (請參閱 中的 Amazon GameLift 端點和配額AWS 一般參考)。當遊戲工作階段結束時,Amazon 會將伺服器日誌 GameLift 上傳至 Amazon Simple Storage Service (Amazon S3)。Amazon GameLift 不會上傳超過 限制的日誌。日誌可以快速增長,並超過大小限制。您應該監控日誌,並將日誌輸出限制為僅必要訊息。

在伺服器指令碼中記錄訊息

您可以在即時伺服器 的指令碼中輸出自訂訊息。使用下列步驟將伺服器訊息傳送至日誌檔案:

  1. 建立 varaible 以保留對記錄器物件的參考。

    var logger;
  2. init()函數中,從工作階段物件取得記錄器,並將其指派給您的記錄器變數。

    function init(rtSession) { session = rtSession; logger = session.getLogger(); }
  3. 呼叫記錄器上的適當函數以輸出訊息。

    除錯訊息

    logger.debug("This is my debug message...");

    資訊性訊息

    logger.info("This is my info message...");

    警告訊息

    logger.warn("This is my warn message...");

    錯誤訊息

    logger.error("This is my error message...");

    嚴重錯誤訊息

    logger.fatal("This is my fatal error message...");

    客戶遇到嚴重錯誤訊息

    logger.cxfatal("This is my customer experience fatal error message...");

如需指令碼中記錄陳述式的範例,請參閱 實時服務器腳本示例

日誌檔案中的輸出指出訊息類型 (DEBUGINFOWARNERRORFATAL、、CXFATAL),如範例日誌的下列各行所示:

09 Sep 2021 11:46:32,970 [INFO] (gamelift.js) 215: Calling GameLiftServerAPI.InitSDK...
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 220: GameLiftServerAPI.InitSDK succeeded
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 223: Waiting for Realtime server to start...
09 Sep 2021 11:46:33,15 [WARN] (index.js) 204: Connection is INSECURE. Messages will be sent/received as plaintext.

存取伺服器日誌

當遊戲工作階段結束時,Amazon GameLift 會自動將日誌儲存在 Amazon S3 中,並保留 14 天。您可以使用 GetGameSessionLogUrl API呼叫來取得遊戲工作階段日誌的位置。使用 API 呼叫URL傳回的 來下載日誌。

調整記錄層級

日誌可以快速增長,並超過大小限制。您應該監控日誌,並將日誌輸出限制為僅必要訊息。對於即時伺服器,您可以透過在機群的執行期組態中以 形式提供參數來調整記錄層級loggingLevel:LOGGING_LEVEL,其中 LOGGING_LEVEL是下列其中一個值:

  1. debug

  2. info (預設)

  3. warn

  4. error

  5. fatal

  6. cxfatal

此清單的順序是從最不嚴重 (debug) 到最嚴重 (cxfatal)。您設定單一 loggingLevel,伺服器只會記錄該嚴重性層級或更高嚴重性層級的訊息。例如,設定loggingLevel:error只會將機群中的所有伺服器寫入 errorfatalcxfatal 訊息寫入日誌。

您可以在建立機群時或在機群執行後設定其記錄層級。在機群執行後變更其記錄層級,只會影響更新後所建立遊戲工作階段的日誌。任何現有遊戲工作階段的日誌都不會受到影響。如果您在建立機群時未設定記錄層級,您的伺服器預設會將記錄層級設定為 info。如需設定記錄層級的指示,請參閱下列各節。

建立即時伺服器機群時設定記錄層級 (主控台)

請依照 的指示建立 Amazon GameLift 受管EC2機群建立機群,並新增下列內容:

  • 程序管理步驟的伺服器程序配置子步驟中,提供記錄層級鍵值對 (例如 loggingLevel:error) 作為啟動參數 的值。使用非英數字元 (逗號除外) 將記錄層級與任何其他參數 (例如 loggingLevel:error +map Winter444) 分隔。

建立即時伺服器機群時設定記錄層級 (AWS CLI)

請依照 的指示建立 Amazon GameLift 受管EC2機群建立機群,並新增下列內容:

  • 在 參數--runtime-configuration的 引數中create-fleet,提供記錄層級鍵值對 (例如 loggingLevel:error) 作為 的值Parameters。使用非英數字元 (逗號除外) 將記錄層級與任何其他參數分開。請參閱下列範例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"
設定執行中即時伺服器機群的記錄層級 (主控台)

請依照 的指示更新 Amazon GameLift 機群組態,使用 Amazon GameLift 主控台更新您的機群,並新增下列內容:

  • 編輯機群頁面的伺服器程序配置 下,提供記錄層級鍵值對 (例如 loggingLevel:error) 作為啟動參數 的值。使用非英數字元 (逗號除外) 將記錄層級與任何其他參數 (例如 loggingLevel:error +map Winter444) 分隔。

設定執行中即時伺服器機群的記錄層級 (AWS CLI)

請依照 的指示更新 Amazon GameLift 機群組態,使用 更新機群 AWS CLI,並新增下列內容:

  • --runtime-configuration 參數的 引數中update-runtime-configuration,提供記錄層級鍵值對 (例如 loggingLevel:error) 作為 的值Parameters。使用非英數字元 (逗號除外) 將記錄層級與任何其他參數分開。請參閱下列範例:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"