C++ Event Tracing for Windows (ETW) wrapper
I have been investigating Event Tracing for Windows (ETW) for use within existing backend/server applications. MSDN and other sources have sold the power of the framework and its integration with xperf etc which frankly I am impressed with.
However I am a bit concerned by the win32 apis and the overhead of working with the manifest coding compilating/registration, etc.
Folks, do you:
- Recommend it? Had problems using it with your systems?
- Know of a more C++/STL style wrapper?
- Are there tools for managing the manifest files?
Rather than using the Win32 API directly I would recommend using WPP.
WPP is a pre-processor which allow you to write in your code printf-like trace lines anywhere in your code and have the result of those, along with the additional data (e.g. the arguments passed to the various %d and %s in the trace) be logged to ETW.
The definite guide for this is WPP Tracing in Visual C++ 2010 Projects
From one hand ETW is very powerful. But in the same time it's not that easy to start with it.
However, there is project on github that simplifies writing own ETW provider. And it's good example of writing:
- ETW manifest (.man) to disclose event fields
- WPR profile (.wprp) to teach WPRUI (recorder) about your profiler
- WPA profile (.wpaProfile) & Regions Of Interest (.xml) to teach WPA about representation of your data.
Please look here: https://github.com/01org/IntelSEAPI/wiki