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 独立收集器,不过使用相对繁琐;
+