Windows XP와 Windows Server 2003 시절에는 Userenv.log(%Systemroot%\Debug\UserMode\Userenv.log) 디버그 로그를 통해 그룹 정책(GPO) 적용 과정을 매우 상세하게 분석할 수 있었습니다. 이 로그를 활용하면 정책이 적용되는 순서와 소요 시간을 추적하고, 부팅 속도를 늦추는 정책을 찾아내는 등 다양한 GPO 관련 문제를 해결할 수 있었습니다.
이벤트 뷰어로 그룹 정책 확인하기
Windows 7 이상부터는 Microsoft가 Userenv.log 대신 이벤트 뷰어(Event Viewer)를 GPO 처리의 주요 진단 도구로 전환했습니다. 그룹 정책과 관련된 대부분의 이벤트는 다음 경로에서 확인할 수 있습니다.
응용 프로그램 및 서비스 로그 → Microsoft → Windows → Group Policy → Operational

팁: 예를 들어 이벤트 ID 4016과 5016을 활용하면 각 GPO의 처리 시작·종료 시점을 파악할 수 있습니다. 특히 5016 이벤트에는 해당 정책이 적용되는 데 걸린 시간이 기록되어 있어 성능 병목 지점을 찾는 데 유용합니다.
또한 5312 이벤트에는 적용 대상 정책 목록이, 5317 이벤트에는 필터링으로 제외된 정책 목록이 표시됩니다.
다만 이 로그의 이벤트들은 Windows XP의 Userenv.log 파일만큼 세부적인 정보를 담고 있지는 않습니다.
GPSVC 디버그 로그 활성화하기
Windows 7에서는 그룹 정책 클라이언트 서비스(GPSVC)의 디버그 로그를 별도로 활성화할 수도 있습니다. GPO 처리에 대한 확장 로그를 남기는 이 문서화되지 않은 기능은 Windows 8, 10 그리고 Windows Server 2008/2012에서도 동일하게 사용할 수 있습니다.
GPO 디버그 로깅은 레지스트리를 통해 활성화합니다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics 키에 GPSvcDebugLevel이라는 이름의 DWORD 값을 새로 만들고 데이터를 00030002(16진수)로 지정하세요. Diagnostics 하위 키가 없다면 직접 생성해야 할 수도 있습니다.

참고: 아래 명령 한 줄로도 동일한 레지스트리 값을 만들 수 있습니다.
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v GPSvcDebugLevel /t REG_DWORD /d 0x00030002 /f
gpsvc.log 생성 및 확인
레지스트리 설정 후 gpupdate /force 명령으로 정책을 즉시 갱신하세요. 부팅 시점에 적용되는 정책을 디버깅하고 싶다면 컴퓨터를 재시작하는 것이 좋습니다.
재시작이 완료되면 그룹 정책 클라이언트 서비스가 확장 디버그 정보를 gpsvc.log(%WINDIR%\debug\usermode\gpsvc.log) 파일에 기록합니다.
참고로 실제 gpsvc.log 파일의 일부는 다음과 같습니다.

..........
GPSVC(3a8.ce8) 12:24:32:494 MaxTimeToWaitForNetwork: 120000ms
GPSVC(3a8.ce8) 12:24:32:494 TimeRemainingToWaitForNetwork: 0ms
GPSVC(3a8.ce8) 12:24:32:494 UserPolicy: Waiting for machine policy wait for network event with timeout 0 ms
GPSVC(3a8.ce8) 12:24:32:541 GPLockPolicySection: Sid = (null), dwTimeout = 30000, dwFlags = 65538
GPSVC(3a8.ce8) 12:24:32:541 LockPolicySection called for user
GPSVC(3a8.ce8) 12:24:32:541 Sync Lock Called
GPSVC(3a8.ce8) 12:24:32:541 Reader Lock got immediately. m_cReadersInLock : 1
GPSVC(3a8.ce8) 12:24:32:541 Lock taken successfully
GPSVC(3a8.ce8) 12:24:32:541 UnLockPolicySection called for user
GPSVC(3a8.ce8) 12:24:32:541 Found the caller in the ReaderHavingLock List. Removing it...
GPSVC(3a8.ce8) 12:24:32:541 Setting lock state as notLocked
GPSVC(3a8.ce8) 12:24:32:541 UnLocked successfully
GPSVC(3a8.ce8) 12:24:32:556 Opened Existing Registry key
GPSVC(3a8.ce8) 12:24:32:556 UncPath :'\\CORP.DOMAIN.COM\SYSVOL'
............
Policy Reporter로 로그 분석하기
gpsvc.log를 눈으로 직접 분석하는 것은 상당히 번거롭고 시간이 많이 드는 작업입니다. 무료 도구인 Policy Reporter(https://www.sysprosoft.com/policyreporter.shtml)를 사용하면 GPO 디버그 로그를 시간순으로 그룹화된 트리 구조로 시각화해 주므로 훨씬 편리하게 분석할 수 있습니다.

gpsvc.log의 데이터와 GPResult 명령의 결과를 함께 활용하면 클라이언트에서 GPO가 어떻게 적용되었는지 훨씬 정밀하게 분석할 수 있습니다.
참고: 디버그 로깅을 비활성화하려면 GPSvcDebugLevel 값을 0으로 변경하면 됩니다.