private EtwEventLevel ConvertTraceEventTypeToEventLevel(TraceEventType eventType) { EtwEventLevel verbose = EtwEventLevel.Verbose; switch (eventType) { case TraceEventType.Critical: return(EtwEventLevel.Critical); case TraceEventType.Error: return(EtwEventLevel.Error); case (TraceEventType.Error | TraceEventType.Critical): return(verbose); case TraceEventType.Warning: return(EtwEventLevel.Warning); case TraceEventType.Information: return(EtwEventLevel.Information); case TraceEventType.Verbose: return(EtwEventLevel.Verbose); } return(verbose); }
private void LogToEtw(TraceEventType eventType, int id, string eventMessage) { EtwEventLevel level = this.ConvertTraceEventTypeToEventLevel(eventType); EventDescriptor eventDescriptor = new EventDescriptor(0xf01c, 0, 0, (byte)level, 0, 0, 0L); // From DiagnosticMonitorTraceListener try { this.m_eventProvider.WriteEvent(ref eventDescriptor, new object[] { (ulong)id, eventMessage }); } catch (ArgumentException) { } catch (System.ComponentModel.Win32Exception) { } }