네트워크 게임 로깅
네트워킹 문제를 식별하고 디버깅하려면 클라이언트 와 서버 로그가 중요합니다. 많은 네트워킹 로그는 LogNet 카테고리에 속하지만, 특정 시스템과 밀접하게 관련된 로그 카테고리를 확인하여 문제에 대한 더 나은 인사이트를 제공하는 것이 좋습니다.
이러한 카테고리는 디폴트로 활성화되지 않으며, 경험하고 있는 행동에 관한 정보를 수집하기 위해서는 다양한 상세 옵션을 조정해야 할 수 있습니다. 아래 목록은 몇 가지 권장 카테고리를 제공합니다.
카테고리 | 설명 |
---|---|
LogNetTraffic | 이 로그 변수가 VeryVerbose로 설정되면 모든 네트워크 트래픽을 로깅합니다. |
LogNetPackageMap | NetGUID가 어떻게 전송, 수신, 승인되었는지에 관한 정보를 로깅합니다. |
LogNetVersion | FRepLayout 및 FObjectReplicator에서 사용하는 프로퍼티 리플리케이션(Property Replication) 및 RepNotify 함수에 관한 정보를 로깅합니다. |
LogNetFastTArray | ^ |
LogNetDormancy | ^ |
LogRep | ^ |
LogRepTraffic | ^ |
LogRepProperties | 리플리케이트된 프로퍼티의 전송 및 수신에 관한 정보를 로깅합니다. |
PacketHandlerLog | 패킷 핸들러와 컴포넌트에 대한 정보를 로깅합니다. 이러한 컴포넌트에는 해당 서브 카테고리가 있습니다. 예를 들어 LogDTLSHandler, OodleNetworkHandlerComponentLog, LogHandshake가 있습니다. |
LogDemo | 리플레이의 녹화 및 재생에 관한 정보를 로깅합니다. 각 리플레이 스트리머에는 다음과 같은 관련 로그 카테고리가 있습니다. LogLocalFileReplay, LogSaveGameReplay, LogNullReplay, LogMemoryReplay. |
이러한 카테고리를 활성화하고 상세 옵션을 조정하는 방법에는 여러 가지가 있습니다. 하나는 다음 명령줄 실행인자를 전달하는 방법입니다.
-LogCmds=<LogCategory><Log Verbosity>
다른 방법은 콘솔 명령 Log를 사용하는 방법입니다.
<Log Category> <Log Verbosity>,
또 다른 방법은 프로젝트의 DefaultEngine.ini
에서 카테고리를 설정하는 것입니다. 예:
[Core.Log]
LogNetPackageMap=Log
LogNetTraffic=Verbose
LogRep=VeryVerbose
로그를 읽을 때 다음 목록을 활용하면 어떤 종류의 오류가 발생했는지 확인할 수 있습니다.
UEngine::BroadcastNetworkFailure | 넷 드라이버에서 주요 오류가 발생하면 출력됩니다. 로그 줄에는 실패 타입, 오류 스트링, 오류가 발생한 넷 드라이버에 대한 설명이 포함됩니다. EngineBaseTypes.h의 ENetworkFailure 열거형에서 발생 가능한 네트워크 문제와 간략한 설명 목록을 확인할 수 있습니다. |
UNetConnection::Close | 닫힌 연결에 대한 설명입니다. |
UActorChannel::Close | 채널 인덱스, 해당 채널의 액터, 닫힌 이유가 포함된 LogNetTraffic 카테고리입니다. 이러한 라인 주변의 로그를 확인하면 연결이나 액터 채널이 닫힌 이유를 표시하는 데 도움이 됩니다. |
명령줄 실행인자 -LogTrace=<partial log line>
는 부분적인 로그 메시지 스트링에서 스택을 트레이스합니다. 예를 들면 다음과 같습니다. -LogTrace=UNetConnection::Close
는 로그에 UNetConnection::Close
가 출력될 때마다 스택 트레이스를 생성합니다. 명령줄 실행인자 -DumpRPCs
는 RPC와 파라미터를 덤프하는 기능을 제공합니다. 전송되고 있는 RPC와 파라미터를 트래킹하는 데 유용합니다.
LogTrace 및 DumpRPCs는 모두 NetcodeUnitTest 가 활성화되어 있어야 합니다.