系统跟踪监听器

master
bicijinlian 2 years ago
parent 1562e25588
commit 73b36697e4

@ -3,9 +3,16 @@ using LogStudy.TraceLog;
Console.WriteLine("======== 跟踪日志学习 ========");
UseDefaultListener();
//UseDefaultListener();
//UseCustomListener();
//UseCustomListener2();
UseSystemListener();
Console.ReadLine();
UseCustomListener();
//使用默认监听器
@ -30,6 +37,12 @@ void UseCustomListener()
source.Listeners.Clear();
var customListener = new CustomTraceListener();
//查源码得知Add方法会调用 InitializeListener(listener)方法,
//在 InitializeListener 中会把 IndentLevel 及 IndentSize 重新设置为 Debug.IndentLevel 和 Debug.IndentSize
//所以:设置 TraceListener 的 IndentLevel方法有二
// 1、在 TraceSource.Listeners.Add() 方法之后设置,这样可以单独设置每一个 Listener
// 2、在 TraceSource.Listeners.Add() 方法之前,设置 Debug.IndentLevel 和 Debug.IndentSize
var index = source.Listeners.Add(customListener);
//放在 source.Listeners.Add 前面设置IndentLeveladd之后就自动归零不知道什么原因。
@ -41,5 +54,41 @@ void UseCustomListener()
source.TraceInformation("我是TraceInformation");
}
//使用自定义监听器2
void UseCustomListener2()
{
var source = new TraceSource("ConsoleListenerTraceLog2", SourceLevels.All);
source.Listeners.Clear();
//查源码得知Add方法会调用 InitializeListener(listener)方法,
//在 InitializeListener 中会把 IndentLevel 及 IndentSize 重新设置为 Debug.IndentLevel 和 Debug.IndentSize
//所以:设置 TraceListener 的 IndentLevel方法有二
// 1、在 TraceSource.Listeners.Add() 方法之后设置,这样可以单独设置每一个 Listener
// 2、在 TraceSource.Listeners.Add() 方法之前,设置 Debug.IndentLevel 和 Debug.IndentSize
Debug.IndentLevel = 3;
source.Listeners.Add(new CustomTraceListener());
source.TraceInformation("我是TraceInformation");
}
//使用系统监听器
void UseSystemListener()
{
var source = new TraceSource("System.ListenerTraceLog", SourceLevels.All);
source.Listeners.Clear();
source.Listeners.Add(new ConsoleTraceListener());
source.Listeners.Add(new DelimitedListTraceListener("Delimited.Trace.Log"));
source.Listeners.Add(new XmlWriterTraceListener("Xml.Trace.Log"));
source.TraceEvent(TraceEventType.Warning,1,"-----------------------------");
//确认写入
source.Flush();
}

Loading…
Cancel
Save