Microsoft lanserer NuGet pakke

Microsoft lanserer NuGet pakke for skriving til Event Log via ETW fra .NET

I Windows 2000 introduserte Microsoft Event Tracing for Windows (ETW) for logging og debugging av først og fremst C/C++ applikasjoner.

ETW gjør det mulig å logge strukturerte data veldig effektivt i Windows. Disse kan igjen skrives til fil eller konsumeres av andre applikasjoner.

Logging via ETW kan aktiveres/deaktiveres mens applikasjonen kjører uten at man trenger å gjøre endringer i konfigurasjonen for denne, noe som gjør teknologien velegnet for debugging/troubleshooting.

Selv om API-en fikk en make-over i Windows Vista/2008 Server, var den fremdeless myntet på C/C++ utviklere. For å bruke ETW fra .NET så kreves det en del innsats, noe som gjør at teknologien i liten grad benyttes her.

I 4.5 versjonen av .NET rammeverket introduserte Microsoft System.Diagnostics.Tracing.EventSource klassen som gjør at man fra .NET enklere kan bruke ETW. Men selv om man her får litt hjelp, mangler muligheten til å skrive direkte til Windows Event Log.

Dette løser EventSource pakken som nylig ble lansert i Preview utgave via Nuget. Ved å installere denne pakken, får man klassen Microsoft.Diagnostics.Tracing.EventSource som er en videreutvikling av EventSource-klassen som finnes i .NET 4.5. Det fine med denne pakken er at den også fungerer med .NET 4.0 som brukes for veldig mange applikasjoner.

Under er et eksempel på kode som bruker denne nye featuren:

    [EventSource(Name = "Samples-EventSourceDemos-EventLog")]
    public sealed class MinimalEventSource : EventSource
    {
        public static MinimalEventSource Log = new MinimalEventSource();

        [Event(1, Message = "{0} -> {1}", Channel = EventChannel.Admin)]
        public void Load(long baseAddress, string imageName)
        {
            WriteEvent(1, baseAddress, imageName);
        }
    }
 


EventSource klassen gjør det mulig å skrive til en av fire kanaler; Admin, Operational, Analytics og Debug, og man velger dette i attributten for hendelsen. Eksempelet over skriver til kanalen Admin.

Under vises et eksempel på hvordan disse kanalene vises i Event Vieweren i Windows:

EventViewer

Mer info er å finne på .NET Framework bloggen: http://blogs.msdn.com/b/dotnet/archive/2013/08/09/announcing-the-eventsource-nuget-package-write-to-the-windows-event-log.aspx

Happy logging!