From 1562e25588fe991d7c53a1bcfdd2abd14e39dfc7 Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Tue, 1 Nov 2022 10:32:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=20TraceListener=20?= =?UTF-8?q?=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LogStudy.EventLog/CustomSource.cs | 17 +++++++++++ LogStudy.TraceLog/CustomTraceListener.cs | 39 ++++++++++++++++++++++-- LogStudy.TraceLog/Program.cs | 22 +++++++------ 3 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 LogStudy.EventLog/CustomSource.cs diff --git a/LogStudy.EventLog/CustomSource.cs b/LogStudy.EventLog/CustomSource.cs new file mode 100644 index 0000000..eca28be --- /dev/null +++ b/LogStudy.EventLog/CustomSource.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.Tracing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LogStudy.EventLog +{ + public sealed class CustomSource : EventSource + { + public void OnCommandExecute() + { + + } + } +} diff --git a/LogStudy.TraceLog/CustomTraceListener.cs b/LogStudy.TraceLog/CustomTraceListener.cs index c98b14e..55381d9 100644 --- a/LogStudy.TraceLog/CustomTraceListener.cs +++ b/LogStudy.TraceLog/CustomTraceListener.cs @@ -7,16 +7,51 @@ using System.Threading.Tasks; namespace LogStudy.TraceLog { + /// + /// 自定义跟踪监听器 + /// public class CustomTraceListener : TraceListener { + /// + /// 因为重写了Write方法:给进什么的,需要自行处理。否则缩进等设置不起作用 + /// + /// public override void Write(string? message) { - Console.Write(message); + if (message == null || message?.Length == 0) + { + return; + } + + //处理缩进 + var preText = string.Empty; + if (base.NeedIndent) + { + preText += new string(' ', base.IndentLevel * base.IndentSize); + } + + Console.Write($"{preText}{message}"); } + /// + /// 因为重写了Write方法:给进什么的,需要自行处理。否则缩进等设置不起作用 + /// + /// public override void WriteLine(string? message) { - Console.WriteLine(message); + if (message == null || message?.Length == 0) + { + return; + } + + //处理缩进 + var preText = string.Empty; + if (base.NeedIndent) + { + preText += new string(' ', IndentLevel * IndentSize); + } + + Console.WriteLine($"{preText}{message}"); } } } diff --git a/LogStudy.TraceLog/Program.cs b/LogStudy.TraceLog/Program.cs index 040e011..d16e9bd 100644 --- a/LogStudy.TraceLog/Program.cs +++ b/LogStudy.TraceLog/Program.cs @@ -3,10 +3,11 @@ using LogStudy.TraceLog; Console.WriteLine("======== 跟踪日志学习 ========"); -//UseDefaultListener(); +UseDefaultListener(); UseCustomListener(); + //使用默认监听器 void UseDefaultListener() { @@ -14,6 +15,8 @@ void UseDefaultListener() var eventTypes = (TraceEventType[])Enum.GetValues(typeof(TraceEventType)); var eventId = 1; + source.Listeners[0].IndentLevel = 1; + Array.ForEach(eventTypes, it => { source.TraceEvent(it, eventId++, $"这是一个 {eventTypes} 跟踪日志信息"); @@ -25,16 +28,17 @@ void UseCustomListener() { var source = new TraceSource("ConsoleListenerTraceLog", SourceLevels.All); source.Listeners.Clear(); - source.Listeners.Add(new DefaultTraceListener() { LogFileName="DefaultListenerTrace.log"}); - source.Listeners.Add(new CustomTraceListener() { IndentSize=8,IndentLevel=3}) ; - var eventTypes = (TraceEventType[])Enum.GetValues(typeof(TraceEventType)); - var eventId = 1; + var customListener = new CustomTraceListener(); + var index = source.Listeners.Add(customListener); - Array.ForEach(eventTypes, it => - { - source.TraceEvent(it, eventId++, $"这是一个 {it} 跟踪日志信息"); - }); + //放在 source.Listeners.Add 前面设置IndentLevel,add之后就自动归零,不知道什么原因。 + customListener.IndentLevel = 1; + //或者 + //source.Listeners[index].IndentLevel = 1; + + source.TraceEvent(TraceEventType.Error, 1, $"这是一个 {TraceEventType.Error} 跟踪日志信息"); + source.TraceInformation("我是TraceInformation"); }