AutoLogger 세션 구성 및 시작
AutoLogger 이벤트 추적 세션은 운영 체제 부팅 프로세스 초기에 발생하는 이벤트를 기록합니다. 애플리케이션 및 디바이스 드라이버는 AutoLogger 세션을 사용하여 사용자가 로그인하기 전에 추적을 캡처할 수 있습니다. 디스크 디바이스 드라이버와 같은 일부 디바이스 드라이버는 AutoLogger 세션이 시작될 때 로드되지 않습니다.
AutoLogger는 다음과 같은 방법으로 전역 로거와 다릅니다.
- 하나 이상의 AutoLogger 세션을 지정할 수 있습니다(전역 로거는 모든 사용자가 이벤트를 기록한 단일 세션임).
- AutoLogger는 세션이 시작될 때 공급자에게 사용 알림을 보냅니다(전역 로거가 공급자에게 사용 알림을 보내지 않았기 때문에 공급자는 이벤트 로깅을 시작하기 위해 전역 로거 세션이 시작되었는지 확인하기 위해 다른 방법을 사용해야 했습니다).
- AutoLogger는 NT 커널 로거 이벤트 로깅을 지원하지 않습니다(EVENT_TRACE_PROPERTIES EnableFlags 멤버 참조). NT 커널 로거 이벤트를 기록하려면 전역 로거를 사용해야 합니다.
전역 로거 표시에 대한 자세한 내용은 전역 로거 세션 구성 및 시작을 참조 하세요.
참고 항목
ETW는 Windows Vista 이상에서 AutoLogger를 지원합니다. 이전 운영 체제에서 전역 로거 를 사용합니다.
레지스트리를 사용하여 AutoLogger 세션을 구성합니다. 아직 없는 경우 다음 레지스트리 키를 추가합니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
Autologger 키 아래에 다음 예제와 같이 구성하려는 각 AutoLogger 세션에 대한 키를 만듭니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
\Logger Session A
\Logger Session B
\Logger Session C
각 세션에 대해 세션에 사용하도록 설정할 각 공급자에 대한 키를 만듭니다. 공급자의 GUID를 키로 사용합니다.
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Control
\WMI
\Autologger
\Logger Session A
\{ProviderGuid1}
\{ProviderGuid2}
\Logger Session B
\Logger Session C
다음 표에서는 각 AutoLogger 세션에 대해 정의할 수 있는 값을 설명합니다. 이러한 레지스트리 값을 지정하려면 관리자 권한이 있어야 합니다. 시작 및 Guid 값은 AutoLogger 세션을 시작하는 데 필요한 유일한 값입니다. 다른 모든 값에는 레지스트리에 값이 없는 경우 사용되는 기본 설정이 있습니다. 일반적으로 기본값을 사용해야 합니다. ETW에서 지원할 수 없는 값을 지정하면 ETW가 값을 재정의합니다.
값 | Type | 설명 |
---|---|---|
BufferSize | REG_DWORD | 각 버퍼의 크기(킬로바이트)입니다. 1MB 미만이어야 합니다. ETW는 실제 메모리의 크기를 사용하여 이 값을 계산합니다. |
ClockType | REG_DWORD | 각 이벤트에 대한 타임스탬프를 로깅할 때 사용할 타이머입니다.
기본값은 Windows Vista 이상에서 1(성능 카운터 값)입니다. Windows Vista 이전의 기본값은 2(시스템 타이머)입니다. |
DisableRealtimePersistence | REG_DWORD | 실시간 지속성을 사용하지 않도록 설정하려면 이 값을 1로 설정합니다. 기본값은 실시간 세션에 대해 0(사용)입니다. 실시간 지속성을 사용하도록 설정하면 컴퓨터가 종료될 때까지 배달되지 않은 실시간 이벤트가 유지됩니다. 그러면 다음에 소비자가 세션에 연결할 때 이벤트가 소비자에게 전달됩니다. |
FileCounter | REG_DWORD | 이 값을 설정하거나 수정하지 마세요. 이 값은 FileMax가 지정된 경우 로그 파일 이름을 늘리는 데 사용되는 일련 번호입니다. 값이 유효하지 않으면 1이 가정됩니다. |
FileName | REG_SZ | 로그 파일의 정규화된 경로입니다. 이 파일의 경로가 있어야 합니다. 로그 파일은 순차 로그 파일입니다. 경로는 1024자로 제한됩니다. FileName을 지정하지 않으면 이벤트가 %SystemRoot%\System32\LogFiles\WMI<에 기록됩니다. sessionname.etl>. |
FileMax | REG_DWORD | ETW에서 만드는 로그 파일의 최대 인스턴스 수입니다. FileName에 지정된 로그 파일이 있는 경우 ETW는 파일 이름에 FileCounter 값을 추가합니다. 예를 들어 기본 로그 파일 이름을 사용하는 경우 양식은 %SystemRoot%\System32\LogFiles\WMI<입니다. sessionname.etl>. Nnnn. 컴퓨터가 처음 시작될 때 파일 이름은 sessionname.etl.0001>이고<, 두 번째로 파일 이름이 <sessionname.etl.0002>인 경우입니다. FileMax가 3인 경우 컴퓨터의 네 번째 다시 시작에서 ETW는 카운터를 1로 다시 설정하고 존재하는 경우 sessionname.etl.0001>을 덮어씁<니다. 지원되는 로그 파일의 최대 인스턴스 수는 16개입니다. EVENT_TRACE_FILE_MODE_NEWFILE 로그 파일 모드에서는 이 기능을 사용하지 마세요. |
FlushTimer | REG_DWORD | 추적 버퍼가 강제로 플러시되는 빈도(초)입니다. 최소 플러시 시간은 1초입니다. 이 강제 플러시는 버퍼가 가득 찼을 때 및 추적 세션이 중지되는 경우 발생하는 자동 플러시에 추가됩니다. 실시간 로거의 경우 값이 0(기본값)이면 플러시 시간이 1초로 설정됩니다. 실시간 로거는 LogFileMode가 EVENT_TRACE_REAL_TIME_MODE 설정된 경우입니다. 기본값은 0입니다. 기본적으로 버퍼는 가득 찬 경우에만 플러시됩니다. |
Guid | REG_SZ | 세션을 고유하게 식별하는 GUID가 포함된 문자열입니다. 이러한 값이 필요합니다. |
LogFileMode | REG_DWORD | 하나 이상의 로그 모드를 지정합니다. 가능한 값은 로깅 모드 상수를 참조 하세요. 기본값은 EVENT_TRACE_FILE_MODE_SEQUENTIAL. 로그 파일에 쓰는 대신 EVENT_TRACE_BUFFERING_MODE 또는 EVENT_TRACE_REAL_TIME_MODE 지정할 수 있습니다. EVENT_TRACE_BUFFERING_MODE 지정하면 파일 시스템을 사용할 수 있게 되면 세션 내용을 디스크로 플러시하는 비용이 발생하지 않습니다. 버퍼 크기가 MinimumBuffers 및 BufferSize의 곱이기 때문에 EVENT_TRACE_BUFFERING_MODE 사용하면 시스템에서 MaximumBuffers 값을 무시합니다. AutoLogger 세션은 EVENT_TRACE_FILE_MODE_NEWFILE 로깅 모드를 지원하지 않습니다. EVENT_TRACE_FILE_MODE_APPEND 지정한 경우 BufferSize는 명시적으로 제공되어야 하며 로거와 추가되는 파일 모두에서 동일해야 합니다. |
MaxFileSize | REG_DWORD | 로그 파일의 최대 파일 크기(MB)입니다. 순환 로그 파일 모드가 아닌 한 최대 크기에 도달하면 세션이 닫힙니다. 제한을 지정하지 않으면 값을 0으로 설정합니다. 설정되지 않은 경우 기본값은 100MB입니다. 최대 파일 크기에 도달할 때 발생하는 동작은 LogFileMode의 값에 따라 달라집니다. |
MaximumBuffers | REG_DWORD | 할당할 최대 버퍼 수입니다. 일반적으로 이 값은 최소 버퍼 수와 20개입니다. ETW는 버퍼 크기와 실제 메모리 크기를 사용하여 이 값을 계산합니다. 이 값은 MinimumBuffers의 값보다 크거나 같아야 합니다. |
MinimumBuffers | REG_DWORD | 시작 시 할당할 최소 버퍼 수입니다. 지정할 수 있는 최소 버퍼 수는 프로세서당 두 개의 버퍼입니다. 예를 들어 단일 프로세서 컴퓨터에서 최소 버퍼 수는 2개입니다. |
Start | REG_DWORD | 다음에 컴퓨터를 다시 시작할 때 AutoLogger 세션을 시작하려면 이 값을 1로 설정합니다. 그렇지 않으면 이 값을 0으로 설정합니다. |
상태 | REG_DWORD | AutoLogger의 시작 상태. AutoLogger를 시작하지 못한 경우 이 키의 값은 적절한 Win32 오류 코드입니다. AutoLogger가 성공적으로 시작되면 이 키의 값은 ERROR_SUCCESS(0)입니다. |
부팅 | REG_DWORD | 이 기능은 디버깅 시나리오 외부에서 사용하면 안 됩니다. 이 레지스트리 키를 1로 설정하면 커널 초기화 중에 자동 로그가 평소보다 일찍 시작되므로 많은 중요한 커널 하위 시스템을 초기화하는 동안 이벤트를 캡처할 수 있습니다. 그러나 이 옵션을 사용하도록 설정하면 부팅 시간에 부정적인 영향을 미치며 자동 로그에 추가 제한이 적용됩니다. 이 기능을 사용하도록 설정하면 자동 로그 세션 GUID 를 채워야 하며 다른 많은 자동 로그기 설정이 작동하지 않을 수 있습니다. 이 키는 Windows Server 2022 이상에서 지원됩니다. |
다음 표에서는 세션에 사용하도록 설정하려는 각 공급자에 대해 정의할 수 있는 값을 설명합니다. 이러한 레지스트리 값을 지정하려면 관리자 권한이 있어야 합니다. ETW에서 지원할 수 없는 값을 지정하면 ETW가 값을 재정의합니다.
값 | Type | 설명 |
---|---|---|
Enabled | REG_DWORD | 공급자를 사용할 수 있는지 여부를 확인합니다. 공급자를 사용하도록 설정하려면 이 값을 1로 설정합니다. 공급자를 사용하지 않도록 설정하려면 이 값을 0으로 설정합니다. 기본값은 0입니다. |
EnableFlags | REG_DWORD | 공급자가 이벤트를 생성하는 이벤트의 클래스를 지정하는 공급자 정의 값입니다. 자세한 내용은 EnableTrace 함수의 EnableFlags 매개 변수를 참조하세요. 공급자가 MatchAnyKeyword 또는 MatchAllKeyword를 지원하지 않는 경우 이 값 이름을 지정합니다. |
EnableLevel | REG_DWORD | 이벤트에 포함된 세부 정보 수준을 지정하는 공급자 정의 값입니다. 예를 들어 이 값을 사용하여 공급자가 생성하는 이벤트의 심각도 수준(정보, 경고, 오류)을 나타낼 수 있습니다. 미리 정의된 수준 목록은 EnableTraceEx 함수의 수준 매개 변수를 참조하세요. |
EnableProperty | REG_DWORD | 로그 파일에 다음 항목 중 하나 이상을 포함하려면 이 값을 사용합니다.
|
MatchAnyKeyword | REG_QWORD | 공급자가 작성하려는 이벤트의 범주를 결정하는 키워드(keyword) 비트 마스크입니다. 이벤트의 키워드(keyword) 비트가 이 마스크에 설정된 비트와 일치하는 경우 공급자는 이벤트를 씁니다. 공급자가 모든 이벤트를 작성하도록 지정하려면 이 값을 0으로 설정합니다. 예를 들어 EnableTraceEx 함수의 설명 섹션을 참조하세요. |
MatchAllKeyword | REG_QWORD | 이 비트 마스크는 선택 사항입니다. 이 마스크는 공급자가 작성하려는 이벤트의 범주를 추가로 제한합니다. 이벤트의 키워드(keyword) MatchAnyKeyword 조건을 충족하는 경우 공급자는 이 마스크의 모든 비트가 이벤트의 키워드(keyword) 있는 경우에만 이벤트를 작성합니다. MatchAnyKeyword가 0인 경우 이 마스크는 사용되지 않습니다. 예를 들어 EnableTraceEx 함수의 설명 섹션을 참조하세요. |
레지스트리가 수정되면 다음에 컴퓨터를 다시 시작할 때 AutoLogger 세션이 시작됩니다. AutoLogger 세션은 EnableTraceEx 함수를 호출하여 공급자를 사용하도록 설정합니다.
AutoLogger 세션은 시스템 부팅 시간을 증가시키고 아쉽게 사용해야 합니다. 부팅 프로세스 중에 정보를 캡처하려는 서비스는 AutoLogger 세션을 사용하는 대신 자체에 컨트롤러 논리를 추가하는 것을 고려해야 합니다.
AutoLogger 세션을 중지하려면 ControlTrace 함수를 호출합니다. 함수에 전달하는 세션 이름은 레지스트리에서 세션을 정의하는 데 사용한 레지스트리 키의 이름입니다.
이벤트 추적 세션 시작에 대한 자세한 내용은 이벤트 추적 세션 구성 및 시작을 참조 하세요.
프라이빗 로거 세션 시작에 대한 자세한 내용은 프라이빗 로거 세션 구성 및 시작을 참조 하세요.
NT 커널 로거 세션 시작에 대한 자세한 내용은 NT 커널 로거 세션 구성 및 시작을 참조 하세요.