代码之家  ›  专栏  ›  技术社区  ›  Kaveh Shahbazian

自定义跟踪侦听器中的缩进

  •  0
  • Kaveh Shahbazian  · 技术社区  · 15 年前

    如何在自定义跟踪侦听器中实现支持缩进?

    Trace.Indent();
    // or
    Trace.Unindent();
    

    即使存在以下实现,也不起作用:

    protected override void WriteIndent() { ... }
    

    在那个自定义的traceListener中。

    我错过什么了吗?

    3 回复  |  直到 9 年前
        1
  •  1
  •   Steven    15 年前

    你可以使用 TextWriterTraceListener 班级。它支持缩进。

        2
  •  1
  •   Paolo Tedesco    15 年前

    我想你得打电话 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");
        }
    }
    
        3
  •  1
  •   Kaveh Shahbazian    10 年前

    我已经把它理解为跟踪更改缩进级别的两种静态方法。所以我要这样做:

    ...
    if (entry.IndentLevel > 0)
        writer.WriteLine(
            new string(' ', entry.IndentLevel * IndentSize) +
    ...
    
    推荐文章