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

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

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

您可以從日誌檔中的自訂伺服器擷取Amazon GameLift Servers自訂伺服器訊息。

重要

每個遊戲工作階段的日誌檔案大小都有限制 (請參閱 中的Amazon GameLift Servers端點和配額AWS 一般參考)。當遊戲工作階段結束時, 會將伺服器日誌Amazon GameLift Servers上傳至 Amazon Simple Storage Service (Amazon S3)。 Amazon GameLift Servers不會上傳超過限制的日誌。日誌可以快速成長並超過大小限制。您應該監控日誌,並將日誌輸出限制為僅必要訊息。

設定自訂伺服器的記錄

使用Amazon GameLift Servers自訂伺服器時,您可以編寫自己的程式碼來執行記錄,這是您在伺服器程序組態中設定的一部分。 Amazon GameLift Servers會使用記錄組態來識別它必須在每個遊戲工作階段結束時上傳至 S3 的檔案。

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

C++
設定記錄 (C++)
  1. 建立字串向量,其為遊戲伺服器日誌檔案的目錄路徑。

    std::string serverLog("serverOut.log"); // Example server log file std::vector<std::string> logPaths; logPaths.push_back(serverLog);
  2. 提供向量做為 ProcessParameters 物件的 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 物件。 ProcessReady

    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. 提供您的清單做為 ProcessParameters 物件的 LogParametersProcessParameters

    var processReadyParameter = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(logPaths));
  3. 當您呼叫 ProcessReady() 時,請提供 ProcessParameters 物件。 ProcessReady

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

存取伺服器日誌

日誌存取因機群類型而異:

受管 EC2 機群

當遊戲工作階段結束時, Amazon GameLift Servers會自動將日誌存放在 S3 儲存貯體中,並保留 14 天。若要取得遊戲工作階段日誌的位置,您可以使用 GetGameSessionLogUrl API 操作。若要下載日誌,請使用 操作傳回的 URL。

或者,您可以設定自己的記錄解決方案,方法是將遊戲伺服器設定為將日誌直接傳送到您偏好的記錄服務或儲存位置。如需詳細資訊,請參閱將Amazon GameLift Servers託管遊戲伺服器連接到其他 AWS 資源

容器機群

容器機群會從所有容器擷取標準輸出和錯誤串流。您可以使用下列其中一個選項來設定記錄:

  • 在指定的日誌群組中將容器輸出儲存為 CloudWatch 日誌串流

  • 將容器輸出儲存至 S3 儲存貯體

  • 關閉記錄 (不會儲存容器輸出)

如需在建立容器機群時設定記錄選項的詳細資訊,請參閱 Amazon GameLift Servers API 參考中的 LogConfiguration