You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
3.3 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}
/// <summary>
/// 处理事件
/// 其中 PayloadName 是个数组,表示事件源方法的形参数名称列表
/// Payload也是个数组为 PayloadName 形参列表对应的实参列表
/// </summary>
/// <param name="eventData"></param>
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();
}
}
}