首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义TraceListener中的缩进

自定义TraceListener中的缩进
EN

Stack Overflow用户
提问于 2010-02-10 15:17:05
回答 3查看 1.7K关注 0票数 0

我应该如何在自定义TraceListener中实现支持缩进?

代码语言:javascript
复制
Trace.Indent();
// or
Trace.Unindent();

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

代码语言:javascript
复制
protected override void WriteIndent() { ... }

在自定义TraceListener中。

我是不是遗漏了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-13 06:09:19

我已经把它理解为跟踪更改IndentLevel的两个静态方法。所以我这样做:

代码语言:javascript
复制
...
if (entry.IndentLevel > 0)
    writer.WriteLine(
        new string(' ', entry.IndentLevel * IndentSize) +
...
票数 1
EN

Stack Overflow用户

发布于 2010-02-10 16:35:35

您可以使用TextWriterTraceListener类。它支持缩进。

票数 1
EN

Stack Overflow用户

发布于 2010-02-10 16:58:34

我认为您必须自己显式地调用WriteIndent (如果我正确解释了文档的话)。此代码的工作方式与预期一致:

代码语言:javascript
复制
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");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2235061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档