本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄服務器消息(實時服務器)
您可以從日誌文件中的實時服務器捕獲自定義服務器消息。若要瞭解自訂伺服器的記錄,請參閱記錄伺服器訊息 (自訂伺服器)。
您可以將不同類型的訊息輸出至記錄檔 (請參閱在伺服器指令碼中記錄訊息)。除了自定義消息之外,您的實時服務器還使用相同的消息類型輸出系統消息,並寫入相同的日誌文件。您可以調整叢集的記錄等級,以減少伺服器產生的記錄訊息數量 (請參閱調整記錄層級)。
重要
每個遊戲工作階段的記錄檔大小都有限制 (請參閱中的 Amazon GameLift 端點和配額 AWS 一般參考)。當遊戲工作階段結束時,Amazon 會將伺服器日誌 GameLift 上傳到亞馬遜簡單儲存服務 (Amazon S3)。Amazon 不 GameLift 會上傳超過限制的日誌。日誌可以非常快速地成長並超過大小限制。您應該監視您的日誌,並將日誌輸出限制為只有必要的消息。
在伺服器指令碼中記錄訊息
您可以在實時服務器的腳本中輸出自定義消息。請使用下列步驟將伺服器訊息傳送至記錄檔:
-
創建一個可變的來保存對記錄器對象的引用。
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
、、、、、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
-
debug
-
info
(預設值) -
warn
-
error
-
fatal
-
cxfatal
此列表的排序從最不嚴重(debug
)到最嚴重(cxfatal
)。您可以設定單一,loggingLevel
而伺服器只會記錄該嚴重性層級或較高嚴重性層級的訊息。例如,設定loggingLevel:error
會使叢集中的所有伺服器只會將error
fatal
、和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}]"