public static void LiveModel_TraceLogEvent(object sender, TraceLogEventArgs e) { RLLogLevel logLevel = e.LogLevel; switch (logLevel) { case RLLogLevel.LEVEL_ERROR: Console.Error.WriteLine($"LogLevel: {e.LogLevel} LogMessage: {e.Message}"); break; default: Console.WriteLine($"LogLevel: {e.LogLevel} LogMessage: {e.Message}"); break; } }
public void CaptureLogs( string sessionName, IDictionary <string, TraceEventLevel> providers, IDictionary <string, IEnumerable <int> > eventIdFilters = null) { if (string.IsNullOrEmpty(sessionName)) { throw new ArgumentException(nameof(sessionName)); } if (providers == null) { throw new ArgumentException(nameof(providers)); } if (this.currentSession != null) { throw new InvalidOperationException("A trace session is already running."); } this.currentSession = new TraceEventSession(sessionName); foreach (KeyValuePair <string, TraceEventLevel> provider in providers) { this.currentSession.EnableProvider(provider.Key, provider.Value); } this.backgroundTraceThread = new Thread(_ => { Thread.CurrentThread.Name = $"ListenForEventTraceLogs: {sessionName}"; this.currentSession.Source.Dynamic.All += data => { EventHandler <TraceLogEventArgs> handler = this.OnTraceLog; if (handler == null) { return; } // Ignore events that seem to come from MDS infrastructure. if (ShouldExcludeEvent(data, eventIdFilters)) { return; } var builder = new StringBuilder(1024); builder.Append(data.TimeStamp.ToString("yyyy-MM-ddTHH:mm:ss.fffZ")).Append(':'); builder.Append(" [").Append(data.ActivityID.ToString("N").Substring(0, 4)); builder.Append(", ").Append(data.RelatedActivityID.ToString("N").Substring(0, 4)).Append("] "); builder.Append(data.EventName).Append(": "); if (this.preferFormattedMessages && !string.IsNullOrEmpty(data.FormattedMessage)) { builder.Append(data.FormattedMessage); } else { for (int i = 0; i < data.PayloadNames.Length; i++) { builder.Append(data.PayloadNames[i]).Append('=').Append(data.PayloadValue(i)); builder.Append(", "); } // remove trailing ", " builder.Remove(builder.Length - 2, 2); } string message = builder.ToString(); var eventArgs = new TraceLogEventArgs(data.ProviderName, data.Level, message); handler(this, eventArgs); }; // This is a blocking call. this.currentSession.Source.Process(); }); this.backgroundTraceThread.IsBackground = true; this.backgroundTraceThread.Start(); }
private void Post_Evemt_TraceLog(object state) { TraceLogEventArgs e = (TraceLogEventArgs)state; TraceLog(this, e); }