Servermeldungen protokollieren (benutzerdefinierte Server) - Amazon GameLift Servers

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.

Servermeldungen protokollieren (benutzerdefinierte Server)

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

Wichtig

Die Größe einer Protokolldatei pro Spielsitzung ist begrenzt (siehe Amazon GameLift ServersEndpunkte und Kontingente im Allgemeine AWS-Referenz). Wenn eine Spielsitzung endet, werden die Serverprotokolle auf Amazon Simple Storage Service (Amazon S3) Amazon GameLift Servers hochgeladen. Amazon GameLift Serverslä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 Meldungen beschränken.

Konfiguration der Protokollierung für benutzerdefinierte Server

Bei Amazon GameLift Servers benutzerdefinierten Servern schreiben Sie Ihren eigenen Code für die Protokollierung, den Sie als Teil Ihrer Serverprozesskonfiguration konfigurieren. Amazon GameLift Serversverwendet Ihre Protokollierungskonfiguration, um die Dateien zu identifizieren, die am Ende jeder Spielsitzung auf S3 hochgeladen werden müssen.

Die folgenden Anweisungen zeigen anhand von vereinfachten Codebeispielen, wie die Protokollierung konfiguriert wird:

C++
So konfigurieren Sie die Protokollierung (C++)
  1. Erstellen Sie einen Vektor von Zeichenketten, die Verzeichnispfade zu den Protokolldateien des Spieleservers 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 den LogParametersIhres ProcessParametersObjekts 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 ProcessParametersObjekt an, wenn Sie ProcessReady() aufrufen.

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

Ein vollständigeres Beispiel finden Sie unterProcessReady().

C#
So konfigurieren Sie die Protokollierung (C#)
  1. Erstellen Sie eine Liste von Zeichenfolgen, die Verzeichnispfade zu den Protokolldateien des Spieleservers 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 LogParametersIhres ProcessParametersObjekts an.

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

    var processReadyOutcome = GameLiftServerAPI.ProcessReady(processReadyParameter);

Ein vollständigeres Beispiel finden Sie unterProcessReady().

In Logs schreiben

Ihre Protokolldateien existieren, nachdem Ihr Serverprozess gestartet wurde. Sie können mit jeder 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 neu 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

Der Protokollzugriff variiert je nach Flottenart:

Verwaltete EC2 Flotten

Wenn eine Spielsitzung endet, Amazon GameLift Servers werden die Logs automatisch in einem S3-Bucket gespeichert und 14 Tage lang aufbewahrt. Um den Speicherort der Protokolle für eine Spielsitzung zu ermitteln, können Sie den GetGameSessionLogUrlAPI-Vorgang verwenden. Verwenden Sie zum Herunterladen der Protokolle die URL, die der Vorgang zurückgibt.

Alternativ kannst du deine eigene Logging-Lösung einrichten, indem du deinen Spieleserver so konfigurierst, dass Logs direkt an deinen bevorzugten Logging-Service oder Speicherort gesendet werden. Weitere Informationen finden Sie unter Kommunizieren Sie mit anderen AWS Ressourcen aus Ihren Flotten.

Containerflotten

Containerflotten erfassen Standardausgabe- und Fehlerströme aus allen Containern. Sie können die Protokollierung mit einer der folgenden Optionen konfigurieren:

  • Speichern Sie die Container-Ausgabe als CloudWatch Protokollstreams in einer angegebenen Protokollgruppe

  • Speichern Sie die Container-Ausgabe in einem S3-Speicher-Bucket

  • Schalten Sie die Protokollierung aus (die Container-Ausgabe wird nicht gespeichert)

Ausführliche Informationen zur Konfiguration der Logging-Optionen bei der Erstellung von Containerflotten finden Sie LogConfigurationin der Amazon GameLift Servers API-Referenz.