전역 로거 세션 구성 및 시작

전역 로거 이벤트 추적 세션은 운영 체제 부팅 프로세스 초기에 발생하는 이벤트를 기록합니다. 애플리케이션 및 디바이스 드라이버는 전역 로거 세션을 사용하여 사용자가 로그인하기 전에 추적을 캡처할 수 있습니다. 디스크 디바이스 드라이버와 같은 일부 디바이스 드라이버는 전역 로거 세션이 시작될 때 로드되지 않습니다.

참고

Windows Vista에서 전역 로거 세션을 만드는 경우 AutoLogger 세션을 대신 만드는 것이 좋습니다.

레지스트리를 사용하여 전역 로거 세션을 구성합니다. 아직 없는 경우 GlobalLogger 키를 다음 레지스트리 키에 추가합니다.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI

다음 표에서는 GlobalLogger 키에 대해 정의할 수 있는 값에 대해 설명합니다. 이러한 레지스트리 값을 지정하려면 관리자 권한이 있어야 합니다. 레지스트리 값은 전역 로거 세션에 이벤트를 기록하는 모든 공급자에 영향을 줍니다. 시작 값은 전역 로거 세션을 시작하는 데 필요한 유일한 값입니다. 다른 모든 값에는 레지스트리에 값이 없는 경우 사용되는 기본 설정이 있습니다. 일반적으로 기본값을 사용해야 합니다. ETW에서 지원할 수 없는 값을 지정하면 ETW가 값을 재정의합니다.

형식 Description
Start REG_DWORD 다음번에 시스템이 시작될 때 전역 로거 세션을 시작하려면 이 값을 1(켜기)으로 설정합니다. 세션이 시작하지 않도록 하려면 이 값을 0(끄기)으로 설정합니다.
BufferSize REG_DWORD 각 버퍼의 크기(킬로바이트)입니다. 이 값은 1MB 미만이어야 합니다. ETW는 실제 메모리의 크기를 사용하여 이 값을 계산합니다.
ClockType REG_DWORD 각 이벤트에 대한 타임스탬프를 기록할 때 사용할 타이머입니다.
  • 1 = 성능 카운터 값(고해상도)
  • 2 = 시스템 타이머
  • 3 = CPU 주기 카운터
각 클록 형식에 대한 설명은 WNODE_HEADERClientContext 멤버를 참조하세요.
기본값은 Windows Vista 이상에서 1(성능 카운터 값)입니다. Windows Vista 이전의 기본값은 2(시스템 타이머)입니다.
EnableKernelFlags REG_BINARY 이 값을 사용하여 하나 이상의 커널 공급자를 사용하도록 설정합니다. 커널 공급자를 사용하도록 설정하면 전역 로거 세션이 시작될 때 자체 이름을 NT 커널 로거로 바꿉니다. 가능한 값은 EVENT_TRACE_PROPERTIESEnableFlags 멤버를 참조하세요.
FileCounter REG_DWORD 전역 로거 세션에서 생성된 이벤트 추적 로그 파일의 수입니다. 시스템은 FileMax 값에 도달할 때까지 이 값을 증가합니다. 그런 다음 값을 0으로 다시 설정합니다. 이 카운터는 시스템이 전역 로거 추적 로그 파일을 덮어쓰지 못하도록 합니다.
FileMax REG_DWORD 시스템에서 허용되는 최대 이벤트 추적 로그 파일 수입니다. 추적 로그 수가 지정된 최대값에 도달하면 시스템은 가장 오래된 로그부터 시작하여 로그를 덮어쓰기 시작합니다.
FileName에 지정된 로그 파일이 있는 경우 ETW는 파일 이름에 FileCounter 값을 추가합니다. 예를 들어 기본 로그 파일 이름을 사용하는 경우 양식은 %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl.NNNN입니다.
기본값은 0입니다. 즉, 최대값이 없습니다.
FileName REG_SZ 로그 파일의 정규화된 경로입니다. 이 파일의 경로가 있어야 합니다. 로그 파일은 순차적 로그 파일입니다. 전역 로거 세션에 이벤트를 쓰는 모든 공급자는 이 로그 파일에 이벤트를 씁니다. 경로는 1024자로 제한됩니다. FileName 을 지정하지 않으면 이벤트가 %SystemRoot%\System32\LogFiles\WMI\GlobalLogger.etl에 기록됩니다. Windows Vista 이전: 기본 파일은 %SystemRoot%\System32\LogFiles\WMI\Trace.log입니다.

FlushTimer REG_DWORD 추적 버퍼가 강제로 플러시되는 빈도(초)입니다. 최소 플러시 시간은 1초입니다. 이 강제 플러시 는 버퍼가 가득 차고 추적 세션이 중지되는 경우 발생하는 자동 플러시 외에도 발생합니다.
실시간 로거의 경우 값 0(기본값)은 플러시 시간이 1초로 설정됨을 의미합니다. 실시간 로거는 LogFileModeEVENT_TRACE_REAL_TIME_MODE 설정되는 경우입니다.
기본값은 0입니다. 기본적으로 버퍼는 가득 찬 경우에만 플러시됩니다.
LogFileMode REG_DWORD 로그 세션 옵션을 지정합니다. 값은 로깅 모드 상수를 참조하세요. 이 값은 Windows Vista 이상에서 지원됩니다.
MaximumBuffers REG_DWORD 할당할 최대 버퍼 수입니다. 일반적으로 이 값은 최소 버퍼 수와 20개입니다. ETW는 버퍼 크기와 실제 메모리 크기를 사용하여 이 값을 계산합니다. 이 값은 MinimumBuffers 값보다 크거나 같아야 합니다.
MaxFileSize REG_DWORD 이벤트 추적 로그 파일의 최대 크기(메가바이트)입니다. 기본적으로 최대 파일 크기는 없습니다.
MinimumBuffers REG_DWORD 전역 로거 세션이 시작될 때 할당할 최소 버퍼 수입니다. 지정할 수 있는 최소 버퍼 수는 프로세서당 두 개의 버퍼입니다. 예를 들어 단일 프로세서 컴퓨터에서 최소 버퍼 수는 2개입니다.
단일 프로세서 시스템의 기본값은 0x3.
상태 REG_DWORD 전역 로거의 시작 상태. 전역 로거를 시작하지 못한 경우 이 키의 값은 적절한 Win32 오류 코드입니다. 전역 로거가 성공적으로 시작된 경우 이 키의 값은 ERROR_SUCCESS(0)입니다.

레지스트리가 수정되고 컴퓨터가 다시 시작되면 전역 로거 세션이 자동으로 시작되고 한 가지 예외가 있는 다른 세션과 마찬가지로 사용됩니다. WMI_GLOBAL_LOGGER_ID 상수 핸들(Wmistr.h에 정의됨)을 사용하여 전역 로거 세션을 참조합니다. 이 상수는 세션 핸들을 허용하는 모든 이벤트 추적 함수의 인수로 사용할 수 있습니다. 세션 이름을 수락하는 함수에서 GLOBAL_LOGGER_NAME 사용합니다.

전역 로거 컨트롤러는 EnableTrace 함수를 호출하여 공급자를 사용하도록 설정하지 않습니다. 공급자는 전역 로거 세션이 시작되었는지 확인하고 자체를 사용하도록 설정할 책임이 있습니다.

전역 로거 세션이 시작되었는지 확인하려면 ControlTrace 함수를 호출하여 SessionHandle 을 WMI_GLOBAL_LOGGER_ID 설정하고 ControlCodeEVENT_TRACE_CONTROL_QUERY. ControlTrace 호출에 성공하면 전역 로거 세션이 존재하고 공급자가 전역 로거 세션에 이벤트를 사용하도록 설정하고 로그할 수 있습니다(Global Logger가 활성화되지 않은 경우 ControlTrace 함수는 ERROR_WMI_INSTANCE_NOT_FOUND 반환).

일반적으로 컨트롤러는 공급자를 사용하도록 설정할 때 사용 플래그 및 수준을 공급자에게 전달해야 하지만 전역 로거 컨트롤러가 공급자를 사용하도록 설정하지 않기 때문에 필요한 경우 이 정보를 자체적으로 전달하는 것은 공급자의 책임입니다.

전역 로거 세션은 제한된 리소스이며 드물게 사용해야 합니다. 부팅 프로세스 중에 정보를 캡처하려는 서비스는 전역 로거 세션을 사용하는 대신 자체에 컨트롤러 논리를 추가하는 것을 고려해야 합니다.

이벤트 추적 세션 시작에 대한 자세한 내용은 이벤트 추적 세션 구성 및 시작을 참조하세요.

프라이빗 로거 세션 시작에 대한 자세한 내용은 프라이빗 로거 세션 구성 및 시작을 참조하세요.

NT 커널 로거 세션을 시작하는 방법에 대한 자세한 내용은 NT 커널 로거 세션 구성 및 시작을 참조하세요.