Protokollieren von Servernachrichten (Echtzeitserver) - 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 (Echtzeitserver)

Sie können benutzerdefinierte Servernachrichten von Ihren Echtzeitservern in Protokolldateien erfassen. Weitere Informationen zur Protokollierung für benutzerdefinierte Server finden Sie unter Protokollieren von Servernachrichten (benutzerdefinierte Server).

Es gibt verschiedene Arten von Nachrichten, die Sie in Ihren Protokolldateien speichern können (siehe Protokollieren von Nachrichten in Ihrem Serverskript). Zusätzlich zu Ihren benutzerdefinierten Nachrichten geben Ihre Echtzeitserver Systemnachrichten mit denselben Nachrichtentypen aus und schreiben in dieselben Protokolldateien. Sie können die Protokollierungsstufe für Ihre Flotte anpassen, um die Menge der von Ihren Servern generierten Protokollierungsnachrichten zu reduzieren (siehe Anpassen der Protokollierungsebene).

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.

Protokollieren von Nachrichten in Ihrem Serverskript

Sie können benutzerdefinierte Nachrichten im Skript für Ihre Echtzeit-Server ausgeben. Gehen Sie wie folgt vor, um Servernachrichten an eine Protokolldatei zu senden:

  1. Erstellen Sie einen Wert, der den Verweis auf das Logger-Objekt enthält.

    var logger;
  2. Rufen Sie in der init() Funktion den Logger aus dem Sitzungsobjekt ab und weisen Sie ihn Ihrer Logger-Variablen zu.

    function init(rtSession) { session = rtSession; logger = session.getLogger(); }
  3. Rufen Sie die entsprechende Funktion auf dem Logger auf, um eine Nachricht auszugeben.

    Debuggen von Nachrichten

    logger.debug("This is my debug message...");

    Informative Nachrichten

    logger.info("This is my info message...");

    Warnmeldungen

    logger.warn("This is my warn message...");

    Fehlermeldungen

    logger.error("This is my error message...");

    Schwerwiegende Fehlermeldungen

    logger.fatal("This is my fatal error message...");

    Schwerwiegende Fehlermeldungen für Kunden

    logger.cxfatal("This is my customer experience fatal error message...");

Ein Beispiel für die Protokollierungsanweisungen in einem Skript finden Sie unter Beispiel für ein Realtime Server-Skript.

Die Ausgabe in den Protokolldateien gibt den Nachrichtentyp (DEBUG, INFO, WARN, ERROR, FATAL, CXFATAL), wie in den folgenden Zeilen aus einem Beispielprotokoll dargestellt:

09 Sep 2021 11:46:32,970 [INFO] (gamelift.js) 215: Calling GameLiftServerAPI.InitSDK...
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 220: GameLiftServerAPI.InitSDK succeeded
09 Sep 2021 11:46:32,993 [INFO] (gamelift.js) 223: Waiting for Realtime server to start...
09 Sep 2021 11:46:33,15 [WARN] (index.js) 204: Connection is INSECURE. Messages will be sent/received as plaintext.

Zugreifen auf Serverprotokolle

Wenn eine Spielsitzung endet, speichert Amazon die Protokolle GameLift automatisch in Amazon S3 und speichert sie 14 Tage lang. Sie können den GetGameSessionLogUrl API-Aufruf verwenden, um den Speicherort der Protokolle für eine Spielsitzung abzurufen. Verwenden Sie die vom API-Aufruf zurückgegebene URL, um die Protokolle herunterzuladen.

Anpassen der Protokollierungsebene

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. Für Echtzeitserver können Sie die Protokollierungsebene anpassen, indem Sie in der Laufzeitkonfiguration Ihrer Flotte einen Parameter in der Form angebenloggingLevel:LOGGING_LEVEL, wobei einer der folgenden Werte LOGGING_LEVEL ist:

  1. debug

  2. info (Standard)

  3. warn

  4. error

  5. fatal

  6. cxfatal

Diese Liste ist von am wenigsten schwerwiegend (debug) bis am schwerwiegendsten (cxfatal). Sie legen einen einzelnen fest loggingLevel und der Server protokolliert Nachrichten nur mit diesem oder einem höheren Schweregrad. Wenn Sie beispielsweise festlegen, schreiben loggingLevel:error alle Server in Ihrer Flotte nur fatal-, error- und -cxfatalNachrichten in das Protokoll.

Sie können die Protokollierungsstufe für Ihre Flotte festlegen, wenn Sie sie erstellen oder nachdem sie ausgeführt wird. Das Ändern der Protokollierungsebene Ihrer Flotte nach der Ausführung wirkt sich nur auf Protokolle für Spielsitzungen aus, die nach dem Update erstellt wurden. Protokolle für bestehende Spielsitzungen sind davon nicht betroffen. Wenn Sie beim Erstellen Ihrer Flotte keine Protokollierungsebene festlegen, legen Ihre Server die Protokollierungsebene info standardmäßig auf fest. Anweisungen zum Festlegen der Protokollierungsebene finden Sie in den folgenden Abschnitten.

Festlegen der Protokollierungsebene beim Erstellen einer Realtime Servers-Flotte (Konsole)

Folgen Sie den Anweisungen unter , Erstellen Sie eine von Amazon GameLift verwaltete Flotte um Ihre Flotte zu erstellen, mit der folgenden Ergänzung:

  • Geben Sie im Unterschritt Serverprozesszuweisung des Schritts Prozessverwaltung das Schlüssel-Wert-Paar auf Protokollierungsebene (z. B. loggingLevel:error) als Wert für Startparameter an. Verwenden Sie ein nicht alphanumerisches Zeichen (außer Komma), um die Protokollierungsebene von allen zusätzlichen Parametern zu trennen (z. B. loggingLevel:error +map Winter444).

Festlegen der Protokollierungsebene beim Erstellen einer Realtime Servers-Flotte (AWS CLI)

Folgen Sie den Anweisungen unter , Erstellen Sie eine von Amazon GameLift verwaltete Flotte um Ihre Flotte zu erstellen, mit der folgenden Ergänzung:

  • Geben Sie im Argument für den --runtime-configuration Parameter für create-fleetdas Schlüssel-Wert-Paar der Protokollierungsebene (z. B. loggingLevel:error) als Wert für anParameters. Verwenden Sie ein nicht alphanumerisches Zeichen (außer Komma), um die Protokollierungsstufe von allen zusätzlichen Parametern zu trennen. Sehen Sie sich das folgende Beispiel an:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"
Festlegen der Protokollierungsstufe für eine laufende Realtime Servers-Flotte (Konsole)

Folgen Sie den Anweisungen unter , Aktualisieren Sie eine Flottenkonfiguration um Ihre Flotte mithilfe der Amazon- GameLift Konsole zu aktualisieren, mit der folgenden Ergänzung:

  • Geben Sie auf der Seite Flotte bearbeiten unter Serverprozesszuweisung das Schlüssel-Wert-Paar der Protokollierungsebene (z. B. loggingLevel:error) als Wert für Startparameter an. Verwenden Sie ein nicht alphanumerisches Zeichen (außer Komma), um die Protokollierungsebene von allen zusätzlichen Parametern zu trennen (z. B. loggingLevel:error +map Winter444).

Festlegen der Protokollierungsebene für eine laufende Realtime Servers-Flotte (AWS CLI)

Folgen Sie den Anweisungen unter , Aktualisieren Sie eine Flottenkonfiguration um Ihre Flotte mithilfe der zu aktualisierenAWS CLI, mit der folgenden Ergänzung:

  • Geben Sie im Argument für den --runtime-configuration Parameter für update-runtime-configurationdas Schlüssel-Wert-Paar der Protokollierungsebene (z. B. loggingLevel:error) als Wert für anParameters. Verwenden Sie ein nicht alphanumerisches Zeichen (außer Komma), um die Protokollierungsstufe von allen zusätzlichen Parametern zu trennen. Sehen Sie sich das folgende Beispiel an:

--runtime-configuration "GameSessionActivationTimeoutSeconds=60, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=/local/game/myRealtimeLaunchScript.js, Parameters=loggingLevel:error +map Winter444, ConcurrentExecutions=10}]"