本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄伺服器訊息 (即時伺服器)
您可以從日誌檔案中的即時伺服器擷取自訂伺服器訊息。若要了解自訂伺服器的記錄,請參閱 記錄伺服器訊息 (自訂伺服器)。
您可以輸出不同類型的訊息至日誌檔案 (請參閱 在伺服器指令碼中記錄訊息)。除了自訂訊息之外,您的即時伺服器也會使用相同的訊息類型輸出系統訊息,並寫入相同的日誌檔案。您可以調整機群的記錄層級,以減少伺服器產生的記錄訊息數量 (請參閱 調整記錄層級)。
重要
每個遊戲工作階段的日誌檔案大小都有限制 (請參閱 中的 Amazon GameLift 端點和配額AWS 一般參考)。當遊戲工作階段結束時,Amazon 會將伺服器日誌 GameLift 上傳至 Amazon Simple Storage Service (Amazon S3)。Amazon GameLift 不會上傳超過 限制的日誌。日誌可以快速增長,並超過大小限制。您應該監控日誌,並將日誌輸出限制為僅必要訊息。
在伺服器指令碼中記錄訊息
您可以在即時伺服器 的指令碼中輸出自訂訊息。使用下列步驟將伺服器訊息傳送至日誌檔案:
-
建立 varaible 以保留對記錄器物件的參考。
var logger;
-
在
init()
函數中,從工作階段物件取得記錄器,並將其指派給您的記錄器變數。function init(rtSession) { session = rtSession; logger = session.getLogger(); }
-
呼叫記錄器上的適當函數以輸出訊息。
除錯訊息
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
、INFO
、WARN
ERROR
、FATAL
、、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
-
debug
-
info
(預設) -
warn
-
error
-
fatal
-
cxfatal
此清單的順序是從最不嚴重 (debug
) 到最嚴重 (cxfatal
)。您設定單一 loggingLevel
,伺服器只會記錄該嚴重性層級或更高嚴重性層級的訊息。例如,設定loggingLevel:error
只會將機群中的所有伺服器寫入 error
、 fatal
和 cxfatal
訊息寫入日誌。
您可以在建立機群時或在機群執行後設定其記錄層級。在機群執行後變更其記錄層級,只會影響更新後所建立遊戲工作階段的日誌。任何現有遊戲工作階段的日誌都不會受到影響。如果您在建立機群時未設定記錄層級,您的伺服器預設會將記錄層級設定為 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}]"