Sunday, November 09, 2008 5:18 PM
ahopper
Announcing NTrace v1.0
I’m pleased to announce the general availability of the NTrace library and preprocessor. NTrace is a combination of a runtime library and a preprocessor that enables you to incorporate the same kind of tracing flexibility and performance that was previously only available to the lucky folks still writing unmanaged code. There are a log of advantages to using NTrace/ETW: higher performance, flexibility, and zero-config tracing.
In terms of performance, we’re talking orders of magnitude faster when no tracing is being performed, and 2-3 faster when tracing is enabled. This is critical in applications that require the highest performance under heavy load (Internet-facing apps, Enterprise applications, etc.). For obvious reasons, you’ll take a hit once you enable tracing, but the ETW subsystem mitigates this to a large degree.
In terms of flexibility, you can configure ETW tracing to log in many different ways: real-time to a console (similar to listening to the OutputDebugString spew), logging to a flat binary file, logging to a binary circular log, and for those with intestinal fortitude, writing a custom ETW listener (we do plan to eventually surface this via the NTrace API as well).
However, I’ve saved the best for last: one of the best features of the ETW tracing APIs is the ability to turn tracing on in your applications without needing to modify any configuration files or restart it (this is especially important for Internet-facing WCF and ASP.NET applications!).
I hope you’ll take the time to download the latest bits, kick the tires, and provide feedback. And of course, this is an open source project (licensed under the Eclipse Public License), so contributors are welcome!