이벤트 추적 세션 구성 및 시작
이벤트 추적 세션을 구성하려면 EVENT_TRACE_PROPERTIES 구조를 사용하여 세션의 속성을 지정합니다. EVENT_TRACE_PROPERTIES 구조에 할당하는 메모리는 메모리의 구조 다음에 있는 세션 및 로그 파일 이름도 포함할 만큼 충분히 커야 합니다.
세션의 속성을 지정한 후 StartTrace 함수를 호출하여 세션을 시작합니다. 함수가 성공 하면 SessionHandle 매개 변수에 세션 핸들이 포함되고 LoggerNameOffset 속성에는 세션 이름에 대한 오프셋이 포함됩니다.
세션에 이벤트를 기록하려는 공급자를 사용하도록 설정하려면 EnableTrace 함수를 호출하여 클래식 공급자를 사용하도록 설정하고 EnableTraceEx 함수를 사용하여 매니페스트 기반 공급자를 사용하도록 설정합니다. Windows 8.1, Windows Server 2012 R2 이상의 특정 조건에 대한 세션 필터링에 대한 로그 이벤트를 원하는 공급자를 사용하도록 설정하려면 EnableTraceEx2 함수를 호출합니다.
또한 TraceSetInformation 함수를 호출하여 이벤트에 대한 추가 정보를 추적할 수도 있습니다. TraceSetInformation 은 이벤트의 확장된 데이터 섹션에 추가 추적 정보를 배치하고 추적 버전 정보 또는 시스템에 현재 등록된 공급자와 같은 정보를 포함할 수 있습니다. 자세한 내용은 추가 이벤트 추적 데이터 검색을 참조 하세요.
최대 8개의 추적 세션은 동일한 매니페스트 기반 공급자에서 이벤트를 사용하도록 설정하고 받을 수 있습니다. 그러나 하나의 추적 세션만 클래식 공급자를 사용하도록 설정할 수 있습니다. 둘 이상의 추적 세션이 클래식 공급자를 사용하도록 설정하려고 하면 두 번째 세션에서 공급자를 사용하도록 설정하면 첫 번째 세션이 이벤트 수신을 중지합니다. 예를 들어 세션 A가 공급자 1을 사용하도록 설정한 다음 세션 B가 공급자 1을 사용하도록 설정한 경우 세션 B만 공급자 1에서 이벤트를 받습니다.
세 가지 함수 중 하나라도 사용하여 공급자를 사용하도록 설정할 수 있지만, MatchAllKeyword 값을 제공하거나, 이벤트에 포함할 확장 데이터 항목을 지정하거나, 공급자 정의 필터 데이터를 제공할 수 없으므로 EnableTrace를 사용하여 매니페스트 기반 공급자를 사용하도록 설정하면 기능이 손실될 수 있습니다. 자세한 내용은 각 함수의 설명 섹션을 참조하세요.
Windows 8.1, Windows Server 2012 R2 이상에서는 EnableTraceEx2 함수 및 ENABLE_TRACE_PARAMETERS 및 EVENT_FILTER_DESCRIPTOR 구조체에서 이벤트 페이로드, 범위 및 스택 워크 필터를 사용하여 로거 세션의 특정 조건을 필터링할 수 있습니다. 이벤트 페이로드 필터에 대한 자세한 내용은 TdhCreatePayloadFilter 및 TdhAggregatePayloadFilters 함수 및 ENABLE_TRACE_PARAMETERS, EVENT_FILTER_DESCRIPTOR 및 PAYLOAD_FILTER_PREDICATE 구조를 참조하세요.
매니페스트 기반 공급자를 사용하도록 설정하는 데 사용되는 수준 및 키워드를 확인하려면 다음 명령 중 하나를 사용합니다.
- Logman 쿼리 공급자 이름
- Wevtutil gp provider-name
명령은 수준 및 키워드만 나열합니다. 공급자는 잠재적인 컨트롤러에 대한 필터 데이터 요구 사항을 문서화해야 합니다.
매니페스트 기반 공급자를 열거하려면 Wevtutil ep를 사용합니다.
클래식 공급자의 경우 공급자가 잠재적인 컨트롤러에 심각도 수준을 문서화하고 사용할 수 있도록 하거나 지원하는 플래그를 사용하도록 설정해야 합니다. 공급자가 컨트롤러에서 사용하도록 설정하려는 경우 공급자는 심각도 수준에 대해 0을 수락하고 플래그를 사용하도록 설정하고 0을 기본 로깅을 수행하도록 요청으로 해석해야 합니다(무엇이든).
공급자가 자신을 등록하기 전이나 후에 공급자를 사용하도록 설정할 수 있습니다. 공급자를 사용하도록 설정한 후 ETW는 공급자의 콜백 함수를 호출합니다. 공급자가 등록되지 않은 경우 ETW는 공급자가 자신을 등록한 후 공급자의 콜백 함수를 호출합니다.
EnableTrace 함수를 사용하여 공급자를 사용하지 않도록 설정하거나(세션에 이벤트 로깅을 중지) 로깅 수준을 업데이트하거나 공급자의 플래그를 사용하도록 설정할 수도 있습니다. EnableTraceEx 함수를 사용하면 공급자를 사용하지 않도록 설정하거나 수준, 키워드, 확장 데이터 및 필터 데이터를 업데이트할 수 있습니다. EnableTrace 또는 EnableTraceEx 함수를 호출할 때마다 ETW는 공급자의 콜백 함수를 호출합니다. 공급자는 세션이 공급자를 사용하지 않도록 설정할 때까지 세션에 대해 사용하도록 설정된 상태로 유지됩니다.
이벤트를 수집한 후 추적 세션을 중지하려면 ControlTrace 함수를 호출하고 EVENT_TRACE_CONTROL_STOP 제어 코드로 전달합니다. 중지할 세션을 지정하려면 StartTrace 함수에 대한 이전 호출에서 얻은 이벤트 추적 세션 핸들 또는 이전에 시작된 세션의 이름을 전달할 수 있습니다. 세션을 중지하기 전에 모든 공급자를 사용하지 않도록 설정해야 합니다. 공급자를 먼저 사용하지 않도록 설정하기 전에 세션을 중지하면 ETW에서 공급자를 사용하지 않도록 설정하고 공급자의 제어 콜백 함수를 호출하려고 합니다. 세션을 시작한 애플리케이션이 공급자를 사용하지 않도록 설정하거나 ControlTrace 함수를 호출하지 않고 종료되는 경우 공급자는 계속 사용하도록 설정됩니다.
ControlTrace가 성공하면 세션 속성이 최종 속성 값을 반영하고 이벤트 추적 세션에 대한 통계를 실행하도록 업데이트됩니다.
이벤트 추적 세션을 시작하는 예제는 다음을 참조하세요.
- 세션을 만들고 매니페스트 기반 공급자 를 사용하도록 설정하는 예제 - 추적 세션을 시작하고 매니페스트 기반 공급자를 사용하도록 설정하고 공급자를 사용하지 않도록 설정한 다음 세션을 중지합니다.
추적 세션 시작에 대한 자세한 내용은 다음 중 하나를 참조하세요.
- SystemTraceProvider 세션 구성 및 시작
- NT 커널 로거 세션 구성 및 시작
- AutoLogger 세션 구성 및 시작
- 전역 로거 세션 구성 및 시작
- 프라이빗 로거 세션 구성 및 시작
관련 항목