사용자 지정 TraceListener에서 들여 쓰기를 구현하는 방법은 무엇입니까? 그 정의 TraceListener에서에서사용자 지정 TraceListener의 들여 쓰기
protected override void WriteIndent() { ... }
:의 구현이있는 경우
Trace.Indent();
// or
Trace.Unindent();
도 작동하지 않습니다.
내가 누락 된 항목이 있습니까?
사용자 지정 TraceListener에서 들여 쓰기를 구현하는 방법은 무엇입니까? 그 정의 TraceListener에서에서사용자 지정 TraceListener의 들여 쓰기
protected override void WriteIndent() { ... }
:의 구현이있는 경우
Trace.Indent();
// or
Trace.Unindent();
도 작동하지 않습니다.
내가 누락 된 항목이 있습니까?
Trace change IndentLevel의 2 가지 정적 메서드로 알아 냈습니다. 그래서 나는 이것을하고있다 :
...
if (entry.IndentLevel > 0)
writer.WriteLine(
new string(' ', entry.IndentLevel * IndentSize) +
...
TextWriterTraceListener
클래스를 사용할 수 있습니다. 들여 쓰기를 지원합니다.
고맙습니다. TextWriterTraceListener는 다중 스레드가 아닙니다. BTW 내 추적 수신기가 잘 작동하고 있습니다 (아직! 멀티 스레드 응용 프로그램이기 때문에 ...))). –
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");
}
}
감사. 나는 비슷한 것을했다. Trace.Indent와 Unentent가 IndentLevel을 변경한다는 것을 알았습니다. 들여 쓰기 삽입이 필요한지 알아 내기 위해이 속성을 사용하고 있습니다. –
그래서 제안 된 것이 유용 했습니까? –
내 재생을 참조하십시오 (코드가 주석에 엉망이됩니다). –