master
bicijinlian 2 years ago
parent 4a6cab3843
commit 9ffda8c20d

@ -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)
{
}
}
}

@ -7,4 +7,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Data.Sqlite.Core" Version="7.0.0" />
</ItemGroup>
</Project>

@ -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());
}
/// <summary>
@ -78,5 +90,72 @@ namespace LogStudy.TraceLog.Next
//强制输出
defaultTraceSource.Flush();
}
/// <summary>
/// 使用默认TraceListener
/// </summary>
static void UseDefaultTraceListener()
{
}
/// <summary>
/// 使用 TextWriterTraceListener
/// </summary>
static void UseTextWriterTraceListener()
{
}
/// <summary>
/// 使用 ConsoleTraceListener
/// </summary>
static void UseConsoleTraceListener()
{
}
/// <summary>
/// 使用 DelimitedTraceListener
/// </summary>
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();
}
/// <summary>
/// 使用 XmlTraceListener
/// </summary>
static void UseXmlTraceListener()
{
}
/// <summary>
/// 使用静态 Trace 类
/// </summary>
static void UseTarce()
{
}
}
}

@ -695,6 +695,11 @@ public sealed class Trace
除了这两个与缓冲输出有关的成员Trace类型还定义了Close方法它会调用TraceListener对象的同名方法来完成对资源的释放。
它还有一个名为CorrelationManager的属性它返回的CorrelationManager对象可以开启和关闭一个逻辑操作已经在上面的演示实例中使用过这个对象。
## 查看跟踪
+ 在各个 TraceListener 中,查看输出;
+ 还可以在“诊断工具”的事件中查看;
+ 还可以使用 IntelliTrace 独立收集器,不过使用相对繁琐;

Loading…
Cancel
Save