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.

161 lines
5.8 KiB
C#

using System.Diagnostics;
namespace LogStudy.TraceLog.Next
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("跟踪日志学习-进阶项目");
Test();
DefaultTraceSource();
DefaultTraceSourceWithLog();
DefaultTraceSourceWithoutSourceLevels();
UseDelimitedTraceListener();
Console.WriteLine("按回车键,退出程序!");
Console.ReadLine();
}
static void Test()
{
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>
/// 使用默认 SourceLevels 参数的 TraceSource
/// 因为 SourceLevels 默认为Off,所以使用默认不传SourceLevels参数的构建函数生成的 TraceSource 是不会输出任何跟踪信息的。
/// </summary>
static void DefaultTraceSourceWithoutSourceLevels()
{
TraceSource defaultTraceSource = new TraceSource("Andy-DefaultTraceSourceWithoutSourceLevels");
var preMessaage = defaultTraceSource.Name + ": ";
defaultTraceSource.TraceData(TraceEventType.Verbose, 1, $"{preMessaage}================");
defaultTraceSource.TraceEvent(TraceEventType.Error, 1, $"{preMessaage}---------------");
defaultTraceSource.TraceInformation($"{preMessaage}++++++++++++++++++++++++++++++++++++++++++++++");
defaultTraceSource.TraceTransfer(2, $"{preMessaage}************", Guid.NewGuid());
//强制输出
defaultTraceSource.Flush();
}
/// <summary>
/// 默认 TraceSource
/// </summary>
static void DefaultTraceSource()
{
TraceSource defaultTraceSource = new TraceSource("Andy-DefaultTraceSource", SourceLevels.All);
var preMessaage = defaultTraceSource.Name + ": ";
defaultTraceSource.TraceData(TraceEventType.Verbose, 1, $"{preMessaage}================");
defaultTraceSource.TraceEvent(TraceEventType.Error, 1, $"{preMessaage}---------------");
defaultTraceSource.TraceInformation($"{preMessaage}++++++++++++++++++++++++++++++++++++++++++++++");
defaultTraceSource.TraceTransfer(2, $"{preMessaage}************", Guid.NewGuid());
//强制输出
defaultTraceSource.Flush();
}
/// <summary>
/// 默认跟踪源:内容输出到日志文件
/// </summary>
static void DefaultTraceSourceWithLog()
{
TraceSource defaultTraceSource = new TraceSource("Andy-DefaultTraceSourceWithLog", SourceLevels.All);
defaultTraceSource.Listeners.Clear();
defaultTraceSource.Listeners.Add(new DefaultTraceListener() { LogFileName = "DefaultTraceListener.log" });
var preMessaage = defaultTraceSource.Name+": ";
defaultTraceSource.TraceData(TraceEventType.Verbose, 1, $"{ preMessaage }================");
defaultTraceSource.TraceEvent(TraceEventType.Error, 1, $"{ preMessaage }---------------");
defaultTraceSource.TraceInformation($"{ preMessaage }++++++++++++++++++++++++++++++++++++++++++++++");
defaultTraceSource.TraceTransfer(2, $"{ preMessaage }************", Guid.NewGuid());
//强制输出
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()
{
}
}
}