TraceLogging hakkında
TraceLogging, bildirim olmadan çözülebilen olayları günlüğe kaydetmeye yönelik bir sistemdir. Windows'da TraceLogging, Windows için Olay İzleme (ETW) olayları oluşturmak için hem kullanıcı modu hem de çekirdek modu bileşenlerinde kullanılır. TraceLogging, Windows için Olay İzleme (ETW) üzerine kuruludur ve kodu izlemek için daha basit bir yol sağlar.
Windows için Olay İzleme (ETW), Windows 2000 ile kullanıma sunulmuştur ve Windows Vista'da güncelleştirildi. TraceLogging, Windows Vista ETW API'leri üzerinde derlenmiştir. Sağlayıcılar, Windows Vista veya sonraki sürümlerde çalışırken TraceLogging kullanabilir. Mevcut ETW izleme denetleyicileri TraceLogging sağlayıcılarını denetlemek ve Windows Vista API'lerini kullanarak izlemeleri yakalamak için kullanılabilir. TDH kod çözme API'lerini kullanan mevcut ETW izleme kod çözücüleri, Windows 10 veya sonraki sürümlerde çalışırken TraceLogging olaylarının kodunu çözebilir.
TraceLogging çeşitli avantajlar sunar:
- WPP'ye benzer ancak ön işleme aracına gerek kalmadan olayları doğrudan kodda tanımlamanın basitliği.
- Yapılandırılmış veriler: türleri olan adlandırılmış alanlar, diziler ve yapılar için destek.
- ETW etkinlikleriyle olay bağıntısı.
- Olayın tüm kod çözme bilgileri olayın kendisine dahil edilir, bu nedenle kodu çözmek için ek dosya gerekmez.
- TraceLogging olay sağlayıcısı API'leri C/C++, .NETve Windows Çalışma Zamanı (WinRT)için kullanılabilir. Python, Rust vb. için dış destek sağlanabilir.
TraceLogging çeşitli avantajlar sağlar ve yeni izleme için dikkate alınması gerekir, ancak bildirim tabanlı ETW birçok senaryo için hala uygundur.
- Olaylarınız Windows Olay Günlüğü'ndeki eski Windows Günlüklerinden birini (örneğin Sistem veya Uygulama günlükleri) hedefleiyorsa bildirim tabanlı ETW kullanmaya devam edin.
- İzleme dosyası boyutu önemli bir noktaysa bildirim tabanlı ETW kullanmaya devam edin. TraceLogging olayları her olayın içindeki olay dizelerini (sağlayıcı adı, olay adı ve alan adları) içerir ve genellikle eşdeğer bildirim tabanlı olaydan daha büyüktür.
- Mevcut izleme teknolojisine büyük bir yatırım yaparsanız TraceLogging'e geçmeniz gerekmez.
- Aksi takdirde, geliştirici ve olay tüketicisi için daha basit bir deneyim sunduğundan TraceLogging kullanmayı göz önünde bulundurun.
API'ye üst düzey genel bakış
Her biri farklı geliştirici hedef kitlelerini hedefleyen birden çok TraceLogging API'si vardır.
- C veya C++ kodundan olay oluşturmanız gerekiyorsa TraceLoggingProvider.h, kullanıcı modundan veya çekirdek modu kodundan TraceLogging olayları oluşturmak için verimli bir API sağlar. Olaylar derleme zamanında tanımlanmalıdır.
- Aksi takdirde, .NET kodundan olaylar oluşturmanız gerekiyorsa, .NET EventSource sınıfı hem bildirim tabanlı hem de TraceLogging tabanlı ETW olaylarının oluşturulmasını destekler. Olaylar derleme zamanında tanımlanmalıdır.
- Aksi takdirde, Windows Çalışma Zamanı (WinRT) kullanıyorsanız, Windows 10'da LoggingChannel , TraceLogging olaylarını günlüğe kaydetmek için olarak genişletilmiştir.
- Aksi takdirde, TraceLoggingDynamicgibi topluluk tarafından desteklenen bir seçenek kullanabilirsiniz.