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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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