本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄伺服器訊息 (自訂伺服器)
您可以在日誌檔中從 Amazon 自訂伺服器擷取 GameLift 自訂伺服器訊息。若要瞭解有關即時伺服器的記錄,請參閱記錄伺服器訊息 (即時伺服器)。
每個遊戲工作階段的記錄檔大小都有限制 (請參閱中的 Amazon GameLift 端點和配額 AWS 一般參考)。當遊戲工作階段結束時,Amazon 會將伺服器日誌 GameLift 上傳到亞馬遜簡單儲存服務 (Amazon S3)。Amazon 不 GameLift 會上傳超過限制的日誌。日誌可以非常快速地成長並超過大小限制。您應該監視您的日誌,並將日誌輸出限制為只有必要的消息。
設定自訂伺服器的記錄
使用 Amazon 自 GameLift 訂伺服器,您可以撰寫自己的程式碼來執行記錄,並將其設定為伺服器處理序組態的一部分。Amazon 會 GameLift 使用您的記錄組態來識別在每個遊戲工作階段結束時必須上傳到 Amazon S3 的檔案。
下列指示說明如何使用簡化的程式碼範例來設定記錄:
- C++
-
若要設定記錄 (C++)
-
建立作為遊戲伺服器記錄檔目錄路徑的字串向量。
std::string serverLog("serverOut.log"); // Example server log file
std::vector<std::string> logPaths;
logPaths.push_back(serverLog);
-
提供你的向量作為你LogParameters的ProcessParameters對象。
Aws::GameLift::Server::ProcessParameters processReadyParameter = Aws::GameLift::Server::ProcessParameters(
std::bind(&Server::onStartGameSession, this, std::placeholders::_1),
std::bind(&Server::onProcessTerminate, this),
std::bind(&Server::OnHealthCheck, this),
std::bind(&Server::OnUpdateGameSession, this),
listenPort,
Aws::GameLift::Server::LogParameters(logPaths));
-
當您呼叫 ProcessReady() 時提供ProcessParameters物件。
Aws::GameLift::GenericOutcome outcome =
Aws::GameLift::Server::ProcessReady(processReadyParameter);
如需更完整的範例,請參閱ProcessReady()。
- C#
-
若要設定記錄 (C#)
-
建立作為遊戲伺服器記錄檔目錄路徑的字串清單。
List<string> logPaths = new List<string>();
logPaths.Add("C:\\game\\serverOut.txt"); // Example of a log file that the game server writes
-
提供您的列表作為您LogParameters的ProcessParameters對象。
var processReadyParameter = new ProcessParameters(
this.OnGameSession,
this.OnProcessTerminate,
this.OnHealthCheck,
this.OnGameSessionUpdate,
port,
new LogParameters(logPaths));
-
當您呼叫 ProcessReady() 時提供ProcessParameters物件。
var processReadyOutcome =
GameLiftServerAPI.ProcessReady(processReadyParameter);
如需更完整的範例,請參閱ProcessReady()。
寫入記錄
您的記錄檔會在伺服器處理序啟動之後存在。您可以使用任何寫入檔案的方法寫入記錄。若要擷取伺服器的所有標準輸出和錯誤輸出,請將輸出串流重新對應至記錄檔,如下列範例所示:
- C++
-
std::freopen("serverOut.log", "w+", stdout);
std::freopen("serverErr.log", "w+", stderr);
- C#
-
Console.SetOut(new StreamWriter("serverOut.txt"));
Console.SetError(new StreamWriter("serverErr.txt"));
存取伺服器記錄
當遊戲工作階段結束時,Amazon 會 GameLift 自動將日誌存放在 Amazon S3 儲存貯體中,並保留 14 天。若要取得遊戲工作階段記錄的位置,您可以使用 GetGameSessionLogUrlAPI 作業。若要下載記錄檔,請使用作業傳回的 URL。