using System; using System.Collections.Generic; using System.Diagnostics.Tracing; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace LogStudy.EventLog.Next { public class CustomEventListener : EventListener { protected override void OnEventSourceCreated(EventSource eventSource) { if (eventSource.Name.StartsWith("EventLogNext-")) { EnableEvents(eventSource, EventLevel.Verbose); } } /// /// 处理事件 /// 其中 PayloadName 是个数组,表示事件源方法的形参数名称列表 /// Payload也是个数组,为 PayloadName 形参列表对应的实参列表 /// /// protected override void OnEventWritten(EventWrittenEventArgs eventData) { var content = ToText(eventData); Console.WriteLine("---------事件日志开始-----------------------------------------------------------------------"); Console.WriteLine(content); Console.WriteLine("=========事件日志结束======================================================================="); Console.WriteLine(); } private string ToJson(EventWrittenEventArgs eventData) { return Newtonsoft.Json.JsonConvert.SerializeObject(eventData, Formatting.Indented); } private string ToText(EventWrittenEventArgs eventData) { StringBuilder stringBuilder= new StringBuilder(1000); stringBuilder.AppendLine($"[TimeStamp = { eventData.TimeStamp.ToLongDateString }]"); stringBuilder.AppendLine($"[OSThreadId = { eventData.OSThreadId }]"); stringBuilder.AppendLine($"[ActivityId = { eventData.ActivityId }]" ); stringBuilder.AppendLine($"[RelatedActivityId = { eventData.RelatedActivityId }],"); stringBuilder.AppendLine($"[Channel = { eventData.Channel }]"); stringBuilder.AppendLine($"[Version = { eventData.Version }]"); stringBuilder.AppendLine($"[Opcode = { eventData.Opcode }]"); stringBuilder.AppendLine($"[EventSource = { eventData.EventSource }]"); stringBuilder.AppendLine($"[EventId = { eventData.EventId }]"); stringBuilder.AppendLine($"[EventName = { eventData.EventName }]"); stringBuilder.AppendLine($"[Keywords = { eventData.Keywords }]"); stringBuilder.AppendLine($"[Level = { eventData.Level }]"); stringBuilder.AppendLine($"[Message = { eventData.Message }]"); stringBuilder.AppendLine($"[PayloadNames = { eventData.PayloadNames }]"); stringBuilder.AppendLine($"[Payload = { eventData.Payload }]"); stringBuilder.AppendLine($"[Message = { eventData.Message }]"); stringBuilder.AppendLine($"[Tags = { eventData.Tags },"); stringBuilder.AppendLine($"[Task = { eventData.Task },"); return stringBuilder.ToString(); } } }