記錄服務器消息(實時服務器) - Amazon GameLift

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

記錄服務器消息(實時服務器)

您可以從日誌文件中的實時服務器捕獲自定義服務器消息。若要瞭解自訂伺服器的記錄,請參閱記錄伺服器訊息 (自訂伺服器)

您可以將不同類型的訊息輸出至記錄檔 (請參閱在伺服器指令碼中記錄訊息)。除了自定義消息之外,您的實時服務器還使用相同的消息類型輸出系統消息,並寫入相同的日誌文件。您可以調整叢集的記錄等級,以減少伺服器產生的記錄訊息數量 (請參閱調整記錄層級)。

重要

每個遊戲工作階段的記錄檔大小都有限制 (請參閱中的 Amazon GameLift 端點和配額 AWS 一般參考)。當遊戲工作階段結束時,Amazon 會將伺服器日誌 GameLift 上傳到亞馬遜簡單儲存服務 (Amazon S3)。Amazon 不 GameLift 會上傳超過限制的日誌。日誌可以非常快速地成長並超過大小限制。您應該監視您的日誌,並將日誌輸出限制為只有必要的消息。

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

您可以在實時服務器的腳本中輸出自定義消息。請使用下列步驟將伺服器訊息傳送至記錄檔:

  1. 創建一個可變的來保存對記錄器對象的引用。

    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...");

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

記錄檔中的輸出會指出訊息的類型 (DEBUG、、、、、CXFATAL),,,,,INFO,,WARN,,ERROR,,FATAL,,,,,,,,,,,,,,,,,,,,,,,,,,,,

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會使叢集中的所有伺服器只會將errorfatal、和cxfatal訊息寫入記錄。

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

創建實時服務器叢集時設置日誌記錄級別(控制台)

請依照中的指示建立亞馬遜 GameLift 受管叢集建立您的叢集,並加入下列項目:

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

創建實時服務器叢集時設置日誌記錄級別(AWS CLI)

請依照中的指示建立亞馬遜 GameLift 受管叢集建立您的叢集,並加入下列項目:

  • 在的--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 主控台更新您的叢集,並加入下列項目:

  • 在 [編輯叢集] 頁面的 [伺服器處理序配置] 下,提供記錄層級索引鍵值配對 (例如loggingLevel:error) 做為 Launch 參數的值。使用非英數字元 (逗號除外),將記錄層級與任何其他參數分隔開來 (例如,loggingLevel:error +map Winter444)。

為正在運行的實時服務器叢集設置日誌記錄級別(AWS CLI)

請依照中的更新叢集組態指示使用更新您的叢集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}]"