記錄伺服器訊息 (自訂伺服器) - Amazon GameLift

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

記錄伺服器訊息 (自訂伺服器)

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

重要

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

設定自訂伺服器的記錄

使用 Amazon 自 GameLift 訂伺服器,您可以撰寫自己的程式碼來執行記錄,並將其設定為伺服器處理序組態的一部分。Amazon 會 GameLift 使用您的記錄組態來識別在每個遊戲工作階段結束時必須上傳到 Amazon S3 的檔案。

下列指示說明如何使用簡化的程式碼範例來設定記錄:

C++
若要設定記錄 (C++)
  1. 建立作為遊戲伺服器記錄檔目錄路徑的字串向量。

    std::string serverLog("serverOut.log"); // Example server log file std::vector<std::string> logPaths; logPaths.push_back(serverLog);
  2. 提供你的向量作為你LogParametersProcessParameters對象。

    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));
  3. 當您呼叫 ProcessReady() 時提供ProcessParameters物件。

    Aws::GameLift::GenericOutcome outcome = Aws::GameLift::Server::ProcessReady(processReadyParameter);

如需更完整的範例,請參閱ProcessReady()

C#
若要設定記錄 (C#)
  1. 建立作為遊戲伺服器記錄檔目錄路徑的字串清單。

    List<string> logPaths = new List<string>(); logPaths.Add("C:\\game\\serverOut.txt"); // Example of a log file that the game server writes
  2. 提供您的列表作為您LogParametersProcessParameters對象。

    var processReadyParameter = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(logPaths));
  3. 當您呼叫 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。