Protokollierung für vernetzte Spiele
Client- und Server-Protokolle sind wichtig, um Netzwerkprobleme zu identifizieren und zu beheben. Zwar gehören viele Netzwerkprotokolle zur Kategorie LogNet, wir empfehlen aber, Protokollkategorien zu überprüfen, die sich stärker auf bestimmte Systeme beziehen, um einen umfassenderen Einblick in potenzielle Probleme zu erhalten.
In der Voreinstellung sind diese Kategorien nicht aktiviert und können unterschiedlich ausführlich sein, sodass Sie diese anpassen müssen, um Informationen über Ihr beobachtetes Verhalten zu erhalten. Die folgende Liste enthält einige empfohlene Kategorien:
| Kategorie | Beschreibung |
|---|---|
LogNetTraffic | Protokolliert den kompletten Netzwerkverkehr, sofern diese Protokollvariable auf VeryVerbose gesetzt ist. |
LogNetPackageMap | Protokolliert Informationen in Bezug auf das Versenden, Empfangen und Quittieren von NetGUIDs. |
LogNetVersion LogNetFastTArray
LogNetDormancy
LogRep LogRepTraffic | Hiermit werden Informationen zu den Funktionen Property Replication und RepNotify protokolliert, die von FRepLayout und FObjectReplicator genutzt werden. |
LogRepProperties | Protokolliert Informationen in Bezug auf das Versenden und den Empfang von replizierten Eigenschaften. |
PacketHandlerLog | Protokolliert Informationen zum Paket-Handler und seinen Komponenten. Diese Komponenten weisen eigene Unterkategorien auf. Beispiele sind LogDTLSHandler, OodleNetworkHandlerComponentLog und LogHandshake. |
LogDemo | Protokolliert Informationen zur Aufzeichnung und Wiedergabe von Wiederholungen. Jeder Wiederholungsstreamer weist eine zugehörige Protokollkategorie auf: LogLocalFileReplay, LogSaveGameReplay, LogNullReplay und LogMemoryReplay. |
Sie können diese Protokollkategorien aktivieren und ihre Ausführlichkeit mit den folgenden Methoden anpassen:
Befehlszeilen-Argumente
Übergeben sie das Befehlszeilenargument LogCmds:
-LogCmds="<LOG_CATEGORY> <LOG_VERBOSITY>"Beispielsweise, um LogNetTraffic auf VeryVerbose festzulegen:
-LogCmds="LogNetTraffic VeryVerbose"Konsolenbefehl
Verwenden Sie den Log-Konsolenbefehl:
Log <LOG_CATEGORY> <LOG_VERBOSITY>Beispielsweise, um LogNetTraffic auf Verbose festzulegen:
Log LogNetTraffic VerboseEngine-Konfiguration
Legen Sie sie in der DefaultEngine.ini Ihres Projekts fest:
[Core.Log]
<LOG_CATEGORY1>=<LOG_VERBOSITY1>
<LOG_CATEGORY2>=<LOG_VERBOSITY2>
...So können Sie unterschiedliche Ausführlichkeiten für mehrere Kategorien festlegen:
[Core.Log]
LogNetPackageMap=Log
LogNetTraffic=Verbose
LogRep=VeryVerboseHilfreiche Fehler
Beim Lesen der Protokolle kann sich die folgende Liste als hilfreich erweisen, um festzustellen, welche Art von Fehler aufgetreten ist.
UEngine::BroadcastNetworkFailure | Wird ausgegeben, wenn ein Netztreiber auf einen gravierenden Fehler stößt. Die Protokollzeile zeigt dann den Fehlertyp, den Fehler-String sowie eine Beschreibung des Netzwerktreibers an, bei dem der Fehler aufgetreten ist. Eine Liste möglicher Netzwerkausfälle mit Kurzbeschreibungen finden Sie in der ENetworkFailure-Enum in EngineBaseTypes.h. |
UNetConnection::Close | Eine Beschreibung der Verbindung, die geschlossen wird. |
UActorChannel::Close | Eine LogNetTraffic-Kategorie, die den Channel-Index, den Actor für diesen Channel sowie den Grund enthält, warum er geschlossen wurde. Eine Überprüfung des Protokolls hinsichtlich solcher Zeilen kann aufschlussreich sein, um zu ermitteln, warum eine Verbindung oder ein Actor geschlossen wurde. |
Das Befehlszeilenargument -LogTrace=<PARTIAL_LOG_LINE> führt Stapelverfolgungen von partiellen Strings in Protokollmeldungen durch. Ein Beispiel: -LogTrace=UNetConnection::Close erzeugt jedes Mal eine Stapelverfolgung, wenn UNetConnection::Close in den Protokollen ausgegeben wird. Das Befehlszeilenargument -DumpRPCs bietet die Möglichkeit, einen Dump der RPCs und ihrer Parameter zu erzeugen. Das kann nützlich sein, um ihre Parameter zu bestimmen und zu verfolgen, welche RPCs gesendet werden.
Für LogTrace und DumpRPCs muss NetcodeUnitTest aktiviert sein.