From 9ffda8c20d76c1eacc6198fcbb6d7a8212edd59d Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Fri, 18 Nov 2022 01:33:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DatabaseTraceListener.cs | 26 ++++++ .../LogStudy.TraceLog.Next.csproj | 4 + LogStudy.TraceLog.Next/Program.cs | 81 ++++++++++++++++++- LogStudy.TraceLog.Next/学习.md | 5 ++ 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 LogStudy.TraceLog.Next/DatabaseTraceListener.cs diff --git a/LogStudy.TraceLog.Next/DatabaseTraceListener.cs b/LogStudy.TraceLog.Next/DatabaseTraceListener.cs new file mode 100644 index 0000000..079d8fc --- /dev/null +++ b/LogStudy.TraceLog.Next/DatabaseTraceListener.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Microsoft.Data.Sqlite; + +namespace LogStudy.TraceLog.Next +{ + public class DatabaseTraceListener : TraceListener + { + + + public override void Write(string? message) + { + + } + + public override void WriteLine(string? message) + { + + } + } +} diff --git a/LogStudy.TraceLog.Next/LogStudy.TraceLog.Next.csproj b/LogStudy.TraceLog.Next/LogStudy.TraceLog.Next.csproj index 74abf5c..185bf22 100644 --- a/LogStudy.TraceLog.Next/LogStudy.TraceLog.Next.csproj +++ b/LogStudy.TraceLog.Next/LogStudy.TraceLog.Next.csproj @@ -7,4 +7,8 @@ enable + + + + diff --git a/LogStudy.TraceLog.Next/Program.cs b/LogStudy.TraceLog.Next/Program.cs index 5bf515a..44f210f 100644 --- a/LogStudy.TraceLog.Next/Program.cs +++ b/LogStudy.TraceLog.Next/Program.cs @@ -8,17 +8,29 @@ namespace LogStudy.TraceLog.Next { Console.WriteLine("跟踪日志学习-进阶项目"); + Test(); + DefaultTraceSource(); DefaultTraceSourceWithLog(); DefaultTraceSourceWithoutSourceLevels(); + UseDelimitedTraceListener(); + Console.WriteLine("按回车键,退出程序!"); Console.ReadLine(); } static void Test() { - WeakReference s = new WeakReference(null); + TraceSource traceSource = new TraceSource("Test",SourceLevels.All); + traceSource.Listeners.Add(new ConsoleTraceListener()); + + var preMessaage = traceSource.Name + ": "; + + traceSource.TraceData(TraceEventType.Verbose, 1, $"{preMessaage}================"); + traceSource.TraceEvent(TraceEventType.Error, 1, $"{preMessaage}---------------"); + traceSource.TraceInformation($"{preMessaage}++++++++++++++++++++++++++++++++++++++++++++++"); + traceSource.TraceTransfer(2, $"{preMessaage}************", Guid.NewGuid()); } /// @@ -78,5 +90,72 @@ namespace LogStudy.TraceLog.Next //强制输出 defaultTraceSource.Flush(); } + + /// + /// 使用默认TraceListener + /// + static void UseDefaultTraceListener() + { + + } + + /// + /// 使用 TextWriterTraceListener + /// + static void UseTextWriterTraceListener() + { + + } + + /// + /// 使用 ConsoleTraceListener + /// + static void UseConsoleTraceListener() + { + + } + + /// + /// 使用 DelimitedTraceListener + /// + static void UseDelimitedTraceListener() + { + var listener = new DelimitedListTraceListener("trace.csv") + { + //控制输出内容 + TraceOutputOptions = TraceOptions.LogicalOperationStack|TraceOptions.DateTime|TraceOptions.Timestamp|TraceOptions.ProcessId|TraceOptions.ThreadId|TraceOptions.Callstack, + Delimiter= ",", + }; + + + TraceSource traceSource = new TraceSource("UseDelimitedTraceListener", SourceLevels.All); + var listenerIndex = traceSource.Listeners.Add(listener); + traceSource.Listeners[listenerIndex].IndentLevel= 1; + + var preMessaage = traceSource.Name + ": "; + + traceSource.TraceData(TraceEventType.Verbose, 1, $"{preMessaage}================"); + traceSource.TraceEvent(TraceEventType.Error, 1, $"{preMessaage}---------------"); + traceSource.TraceInformation($"{preMessaage}++++++++++++++++++++++++++++++++++++++++++++++"); + traceSource.TraceTransfer(2, $"{preMessaage}************", Guid.NewGuid()); + + traceSource.Flush(); + } + + /// + /// 使用 XmlTraceListener + /// + static void UseXmlTraceListener() + { + + } + + /// + /// 使用静态 Trace 类 + /// + static void UseTarce() + { + + } } } \ No newline at end of file diff --git a/LogStudy.TraceLog.Next/学习.md b/LogStudy.TraceLog.Next/学习.md index 612f832..dd3fab7 100644 --- a/LogStudy.TraceLog.Next/学习.md +++ b/LogStudy.TraceLog.Next/学习.md @@ -695,6 +695,11 @@ public sealed class Trace 除了这两个与缓冲输出有关的成员,Trace类型还定义了Close方法,它会调用TraceListener对象的同名方法来完成对资源的释放。 它还有一个名为CorrelationManager的属性,它返回的CorrelationManager对象可以开启和关闭一个逻辑操作,已经在上面的演示实例中使用过这个对象。 +## 查看跟踪 ++ 在各个 TraceListener 中,查看输出; ++ 还可以在“诊断工具”的事件中查看; ++ 还可以使用 IntelliTrace 独立收集器,不过使用相对繁琐; +