네트워크 게임 로깅
네트워킹 문제를 식별하고 디버깅하려면 클라이언트와 서버 로그가 중요합니다. 많은 네트워킹 로그는 LogNet 카테고리에 속하지만, 특정 시스템과 밀접하게 관련된 로그 카테고리를 확인하여 문제에 대한 더 나은 인사이트를 제공하는 것이 좋습니다.
이러한 카테고리는 디폴트로 활성화되지 않으며, 경험하고 있는 행동에 관한 정보를 수집하기 위해서는 다양한 상세 옵션을 조정해야 할 수 있습니다. 아래 목록은 몇 가지 권장 카테고리를 제공합니다.
| 카테고리 | 설명 |
|---|---|
LogNetTraffic | 이 로그 변수가 VeryVerbose로 설정되면 모든 네트워크 트래픽을 로깅합니다. |
LogNetPackageMap | NetGUID가 어떻게 전송, 수신, 승인되었는지에 관한 정보를 로깅합니다. |
LogNetVersion LogNetFastTArray
LogNetDormancy
LogRep LogRepTraffic | FRepLayout 및 FObjectReplicator에서 사용하는 프로퍼티 리플리케이션(Property Replication) 및 RepNotify 함수에 관한 정보를 로깅합니다. |
LogRepProperties | 리플리케이트된 프로퍼티의 전송 및 수신에 관한 정보를 로깅합니다. |
PacketHandlerLog | 패킷 핸들러와 컴포넌트에 대한 정보를 로그로 기록합니다. 이러한 컴포넌트에는 해당 서브 카테고리가 있습니다. 예를 들어 LogDTLSHandler, OodleNetworkHandlerComponentLog, LogHandshake가 있습니다. |
LogDemo | 리플레이 녹화와 재생에 대한 정보를 로그로 기록합니다. 각 리플레이 스트리머에도 LogLocalFileReplay, LogSaveGameReplay, LogNullReplay, LogMemoryReplay 등의 관련 로그 카테고리가 있습니다. |
다음과 같은 방법으로 이러한 로그 카테고리를 활성화하고 상세 옵션을 조정할 수 있습니다.
명령줄 실행인자
LogCmds 명령줄 실행인자를 전달합니다.
-LogCmds="<LOG_CATEGORY> <LOG_VERBOSITY>"예를 들어, 다음과 같이 LogNetTraffic을 VeryVerbose로 설정합니다.
-LogCmds="LogNetTraffic VeryVerbose"콘솔 명령
Log 콘솔 명령을 사용합니다.
Log <LOG_CATEGORY> <LOG_VERBOSITY>예를 들어, 다음과 같이 LogNetTraffic을 Verbose로 설정합니다.
Log LogNetTraffic Verbose엔진 환경설정
프로젝트의 DefaultEngine.ini에서 설정합니다.
[Core.Log]
<LOG_CATEGORY1>=<LOG_VERBOSITY1>
<LOG_CATEGORY2>=<LOG_VERBOSITY2>
...예를 들어, 다음과 같이 여러 카테고리를 서로 다른 상세도로 설정합니다.
[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가 활성화되어 있어야 합니다.