我应该如何在自定义TraceListener中实现支持缩进?
Trace.Indent();
// or
Trace.Unindent();即使存在以下实现,也不起作用:
protected override void WriteIndent() { ... }在自定义TraceListener中。
我是不是遗漏了什么?
发布于 2010-02-13 06:09:19
我已经把它理解为跟踪更改IndentLevel的两个静态方法。所以我这样做:
...
if (entry.IndentLevel > 0)
writer.WriteLine(
new string(' ', entry.IndentLevel * IndentSize) +
...发布于 2010-02-10 16:35:35
您可以使用TextWriterTraceListener类。它支持缩进。
发布于 2010-02-10 16:58:34
我认为您必须自己显式地调用WriteIndent (如果我正确解释了文档的话)。此代码的工作方式与预期一致:
using System;
using System.Xml.Serialization;
using System.Diagnostics;
class Program {
class TestListener : TraceListener {
protected override void WriteIndent() {
if (NeedIndent) {
string indent = new string(' ',IndentLevel * IndentSize);
Console.Write(indent);
}
}
public override void Write(string message) {
WriteIndent();
Console.Write(message);
}
public override void WriteLine(string message) {
WriteIndent();
Console.WriteLine(message);
}
}
public static void Main(params string[] args) {
Trace.Listeners.Add(new TestListener());
Trace.IndentSize = 2;
Trace.WriteLine("test");
Trace.IndentLevel = 4;
Trace.WriteLine("indented");
}
}https://stackoverflow.com/questions/2235061
复制相似问题