本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄伺服器訊息 (自訂伺服器)
您可以從日誌檔案中的自訂伺服器擷取Amazon GameLift Servers自訂伺服器訊息。若要了解 的記錄Amazon GameLift ServersRealtime,請參閱 記錄伺服器訊息 (Amazon GameLift ServersRealtime)。
每個遊戲工作階段的日誌檔案大小都有限制 (請參閱 中的Amazon GameLift Servers端點和配額AWS 一般參考)。當遊戲工作階段結束時, 會將伺服器日誌Amazon GameLift Servers上傳至 Amazon Simple Storage Service (Amazon S3)。 Amazon GameLift Servers不會上傳超過限制的日誌。日誌可以快速成長並超過大小限制。您應該監控日誌,並將日誌輸出限制為僅必要訊息。
設定自訂伺服器的記錄
使用Amazon GameLift Servers自訂伺服器時,您可以編寫自己的程式碼來執行記錄,這是您在伺服器程序組態中設定的一部分。 Amazon GameLift Servers會使用記錄組態來識別它必須在每個遊戲工作階段結束時上傳至 Amazon S3 的檔案。
下列指示說明如何使用簡化的程式碼範例來設定記錄:
- C++
-
設定記錄 (C++)
-
建立字串向量,其為遊戲伺服器日誌檔案的目錄路徑。
std::string serverLog("serverOut.log"); // Example server log file
std::vector<std::string> logPaths;
logPaths.push_back(serverLog);
-
提供向量做為 ProcessParameters 物件的 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 物件。 ProcessReady
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
-
提供您的清單做為 ProcessParameters 物件的 LogParameters。 ProcessParameters
var processReadyParameter = new ProcessParameters(
this.OnGameSession,
this.OnProcessTerminate,
this.OnHealthCheck,
this.OnGameSessionUpdate,
port,
new LogParameters(logPaths));
-
當您呼叫 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"));
存取伺服器日誌
當遊戲工作階段結束時, Amazon GameLift Servers會自動將日誌存放在 Amazon S3 儲存貯體中,並保留 14 天。若要取得遊戲工作階段日誌的位置,您可以使用 GetGameSessionLogUrl API 操作。若要下載日誌,請使用 操作傳回的 URL。