TraceLogging 정보
TraceLogging은 매니페스트 없이 디코딩할 수 있는 이벤트를 로깅하기 위한 시스템입니다. Windows에서 TraceLogging은 사용자 모드 및 커널 모드 구성 요소 모두에서 ETW(Windows용 이벤트 추적) 이벤트를 생성하는 데 사용됩니다. TraceLogging은 ETW(Windows용 이벤트 추적)를 기반으로 하며 코드를 계측하는 간소화된 방법을 제공합니다.
ETW(Windows용 이벤트 추적)는 Windows 2000에서 도입되었으며 Windows Vista에서 업데이트되었습니다. TraceLogging은 Windows Vista ETW API를 기반으로 합니다. 공급자는 Windows Vista 이상에서 실행할 때 TraceLogging을 사용할 수 있습니다. 기존 ETW 추적 컨트롤러를 사용하여 TraceLogging 공급자를 제어하고 Windows Vista API를 사용하여 추적을 캡처할 수 있습니다. TDH 디코딩 API를 사용하는 기존 ETW 추적 디코더는 Windows 10 이상에서 실행할 때 TraceLogging 이벤트를 디코딩할 수 있습니다.
TraceLogging은 다음과 같은 몇 가지 이점을 제공합니다.
- WPP와 비슷하지만 전처리 도구가 필요하지 않은 코드에서 직접 이벤트를 정의하는 간단한 방법입니다.
- 구조적 데이터: 형식이 있는 명명된 필드, 배열 및 구조에 대한 지원.
- ETW 활동을 통한 이벤트 상관 관계입니다.
- 이벤트에 대한 모든 디코딩 정보는 이벤트 자체에 포함되므로 디코딩할 추가 파일이 필요하지 않습니다.
- TraceLogging 이벤트 공급자 API는 C/C++, .NET 및 WinRT(Windows 런타임)에 사용할 수 있습니다. Python, Rust 등에 사용할 수 있는 외부 지원
TraceLogging은 몇 가지 이점을 제공하며 새 추적에 대해 고려해야 하지만 매니페스트 기반 ETW는 여전히 많은 시나리오에 적합합니다.
- 이벤트가 Windows 이벤트 로그(예: 시스템 또는 애플리케이션 로그)의 레거시 Windows 로그 중 하나를 대상으로 하는 경우 매니페스트 기반 ETW를 계속 사용합니다.
- 추적 파일 크기가 중요한 고려 사항인 경우 매니페스트 기반 ETW를 계속 사용합니다. TraceLogging 이벤트에는 각 이벤트 내의 이벤트 문자열(공급자 이름, 이벤트 이름 및 필드 이름)이 포함되며 일반적으로 동일한 매니페스트 기반 이벤트보다 큽니다.
- 기존 추적 기술에 많은 투자를 한 경우 TraceLogging으로 전환할 필요가 없습니다.
- 그렇지 않으면 개발자와 이벤트 소비자에게 더 간단한 환경을 제공하므로 TraceLogging을 사용하는 것이 좋습니다.
API 상위 수준 개요
각기 다른 개발자 대상 그룹을 대상으로 하는 여러 TraceLogging API가 있습니다.
- C 또는 C++ 코드에서 이벤트를 생성해야 하는 경우 TraceLoggingProvider.h 는 사용자 모드 또는 커널 모드 코드에서 TraceLogging 이벤트를 생성하기 위한 효율적인 API를 제공합니다. 이벤트는 컴파일 시간에 정의해야 합니다.
- 그렇지 않으면 .NET 코드에서 이벤트를 생성해야 하는 경우 .NET EventSource 클래스는 매니페스트 기반 및 TraceLogging 기반 ETW 이벤트 생성을 지원합니다. 이벤트는 컴파일 시간에 정의해야 합니다.
- 그렇지 않으면 WinRT(Windows 런타임)를 사용하는 경우 LoggingChannel이 Windows 10 확장되어 TraceLogging 이벤트를 기록합니다.
- 그렇지 않으면 TraceLoggingDynamic과 같은 커뮤니티 지원 옵션을 사용할 수 있습니다.