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();
}
}
}