自定义 TraceListener 缩进

master
bicijinlian 3 years ago
parent 1c6d5c4f45
commit 1562e25588

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.Tracing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LogStudy.EventLog
{
public sealed class CustomSource : EventSource
{
public void OnCommandExecute()
{
}
}
}

@ -7,16 +7,51 @@ using System.Threading.Tasks;
namespace LogStudy.TraceLog
{
/// <summary>
/// 自定义跟踪监听器
/// </summary>
public class CustomTraceListener : TraceListener
{
/// <summary>
/// 因为重写了Write方法给进什么的需要自行处理。否则缩进等设置不起作用
/// </summary>
/// <param name="message"></param>
public override void Write(string? message)
{
Console.Write(message);
if (message == null || message?.Length == 0)
{
return;
}
//处理缩进
var preText = string.Empty;
if (base.NeedIndent)
{
preText += new string(' ', base.IndentLevel * base.IndentSize);
}
Console.Write($"{preText}{message}");
}
/// <summary>
/// 因为重写了Write方法给进什么的需要自行处理。否则缩进等设置不起作用
/// </summary>
/// <param name="message"></param>
public override void WriteLine(string? message)
{
Console.WriteLine(message);
if (message == null || message?.Length == 0)
{
return;
}
//处理缩进
var preText = string.Empty;
if (base.NeedIndent)
{
preText += new string(' ', IndentLevel * IndentSize);
}
Console.WriteLine($"{preText}{message}");
}
}
}

@ -3,10 +3,11 @@ using LogStudy.TraceLog;
Console.WriteLine("======== 跟踪日志学习 ========");
//UseDefaultListener();
UseDefaultListener();
UseCustomListener();
//使用默认监听器
void UseDefaultListener()
{
@ -14,6 +15,8 @@ void UseDefaultListener()
var eventTypes = (TraceEventType[])Enum.GetValues(typeof(TraceEventType));
var eventId = 1;
source.Listeners[0].IndentLevel = 1;
Array.ForEach(eventTypes, it =>
{
source.TraceEvent(it, eventId++, $"这是一个 {eventTypes} 跟踪日志信息");
@ -25,16 +28,17 @@ void UseCustomListener()
{
var source = new TraceSource("ConsoleListenerTraceLog", SourceLevels.All);
source.Listeners.Clear();
source.Listeners.Add(new DefaultTraceListener() { LogFileName="DefaultListenerTrace.log"});
source.Listeners.Add(new CustomTraceListener() { IndentSize=8,IndentLevel=3}) ;
var eventTypes = (TraceEventType[])Enum.GetValues(typeof(TraceEventType));
var eventId = 1;
var customListener = new CustomTraceListener();
var index = source.Listeners.Add(customListener);
Array.ForEach(eventTypes, it =>
{
source.TraceEvent(it, eventId++, $"这是一个 {it} 跟踪日志信息");
});
//放在 source.Listeners.Add 前面设置IndentLeveladd之后就自动归零不知道什么原因。
customListener.IndentLevel = 1;
//或者
//source.Listeners[index].IndentLevel = 1;
source.TraceEvent(TraceEventType.Error, 1, $"这是一个 {TraceEventType.Error} 跟踪日志信息");
source.TraceInformation("我是TraceInformation");
}

Loading…
Cancel
Save