Protokollieren von Servernachrichten (benutzerdefinierte Server) - Amazon GameLift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Protokollieren von Servernachrichten (benutzerdefinierte Server)

Sie können benutzerdefinierte Servernachrichten von Ihren GameLift benutzerdefinierten Amazon-Servern in Protokolldateien erfassen. Weitere Informationen zur Protokollierung für Echtzeitserver finden Sie unter Servermeldungen protokollieren (Realtime Servers).

Wichtig

Die Größe einer Protokolldatei pro Spielsitzung ist begrenzt (siehe Amazon- GameLift Endpunkte und -Kontingente im Allgemeine AWS-Referenz). Wenn eine Spielsitzung endet, lädt Amazon die Serverprotokolle in Amazon Simple Storage Service (Amazon S3) GameLift hoch. Amazon GameLift lädt keine Protokolle hoch, die das Limit überschreiten. Protokolle können sehr schnell wachsen und die Größenbeschränkung überschreiten. Sie sollten Ihre Protokolle überwachen und die Protokollausgabe auf die erforderlichen Nachrichten beschränken.

Konfigurieren der Protokollierung für benutzerdefinierte Server

Bei GameLift benutzerdefinierten Amazon-Servern schreiben Sie Ihren eigenen Code, um die Protokollierung durchzuführen, die Sie als Teil Ihrer Serverprozesskonfiguration konfigurieren. Amazon GameLift verwendet Ihre Protokollierungskonfiguration, um die Dateien zu identifizieren, die am Ende jeder Spielsitzung in Amazon S3 hochgeladen werden müssen.

Die folgenden Anweisungen zeigen, wie Sie die Protokollierung anhand vereinfachter Codebeispiele konfigurieren:

C++
So konfigurieren Sie die Protokollierung (C++)
  1. Erstellen Sie einen Vektor von Zeichenfolgen, die Verzeichnispfade zu Spielserver-Protokolldateien sind.

    std::string serverLog("serverOut.log"); // Example server log file std::vector<std::string> logPaths; logPaths.push_back(serverLog);
  2. Geben Sie Ihren Vektor als die Ihres ProcessParameters LogParametersObjekts an.

    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. Geben Sie das ProcessParameters Objekt an, wenn Sie ProcessReady() aufrufen.

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

Ein vollständigeres Beispiel finden Sie unter ProcessReady().

C#
So konfigurieren Sie die Protokollierung (C#)
  1. Erstellen Sie eine Liste von Zeichenfolgen, die Verzeichnispfade zu Spielserver-Protokolldateien sind.

    List<string> logPaths = new List<string>(); logPaths.Add("C:\\game\\serverOut.txt"); // Example of a log file that the game server writes
  2. Geben Sie Ihre Liste als die Ihres ProcessParameters LogParametersObjekts an.

    var processReadyParameter = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(logPaths));
  3. Geben Sie das ProcessParameters Objekt an, wenn Sie ProcessReady() aufrufen.

    var processReadyOutcome = GameLiftServerAPI.ProcessReady(processReadyParameter);

Ein vollständigeres Beispiel finden Sie unter ProcessReady().

Schreiben in Protokolle

Ihre Protokolldateien existieren, nachdem Ihr Serverprozess gestartet wurde. Sie können mit einer beliebigen Methode in die Protokolle schreiben, um in Dateien zu schreiben. Um die gesamte Standardausgabe und Fehlerausgabe Ihres Servers zu erfassen, ordnen Sie die Ausgabestreams den Protokolldateien zu, wie in den folgenden Beispielen:

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

Zugreifen auf Serverprotokolle

Wenn eine Spielsitzung endet, speichert Amazon die Protokolle GameLift automatisch in einem Amazon S3-Bucket und speichert sie 14 Tage lang. Um den Speicherort der Protokolle für eine Spielsitzung abzurufen, können Sie den GetGameSessionLogUrl-API-Vorgang verwenden. Um die Protokolle herunterzuladen, verwenden Sie die URL, die der Vorgang zurückgibt.