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.

95 lines
2.9 KiB
C#

2 years ago
using System.Diagnostics;
using LogStudy.TraceLog;
Console.WriteLine("======== 跟踪日志学习 ========");
//UseDefaultListener();
//UseCustomListener();
//UseCustomListener2();
UseSystemListener();
Console.ReadLine();
2 years ago
2 years ago
//使用默认监听器
void UseDefaultListener()
{
var source = new TraceSource("TraceLog", SourceLevels.All);
var eventTypes = (TraceEventType[])Enum.GetValues(typeof(TraceEventType));
var eventId = 1;
source.Listeners[0].IndentLevel = 1;
2 years ago
Array.ForEach(eventTypes, it =>
{
source.TraceEvent(it, eventId++, $"这是一个 {eventTypes} 跟踪日志信息");
});
}
//使用自定义监听器
void UseCustomListener()
{
var source = new TraceSource("ConsoleListenerTraceLog", SourceLevels.All);
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);
2 years ago
//放在 source.Listeners.Add 前面设置IndentLeveladd之后就自动归零不知道什么原因。
customListener.IndentLevel = 1;
//或者
//source.Listeners[index].IndentLevel = 1;
source.TraceEvent(TraceEventType.Error, 1, $"这是一个 {TraceEventType.Error} 跟踪日志信息");
source.TraceInformation("我是TraceInformation");
2 years ago
}
//使用自定义监听器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()
{
2 years ago
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();
}
2 years ago