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()); } /// /// 使用默认 SourceLevels 参数的 TraceSource /// 因为 SourceLevels 默认为Off,所以使用默认不传SourceLevels参数的构建函数生成的 TraceSource 是不会输出任何跟踪信息的。 /// 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(); } /// /// 默认 TraceSource /// 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(); } /// /// 默认跟踪源:内容输出到日志文件 /// 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(); } /// /// 使用默认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() { } } }