为什么ConsoleTraceListener没有写入控制台?

Boy*_*ski 3 .net

我经常遇到.NET框架中的项目,这些项目很少或没有关于如何使用这些功能的代码示例.在其他场合,有很多例子,但似乎没有一个像规定那样工作.

例证:System.Diagnostics.ConsoleTraceListener类.

从我读过的所有内容和我见过的每个代码示例,当我做的事情如下:

ConsoleTraceListner listener = new ConsoleTraceListener();
listener.WriteLine("Yo");
Run Code Online (Sandbox Code Playgroud)

...我应该看到一个控制台窗口弹出"Yo".然而,不是那个预期的输出,而是将"Yo"写入Visual Studio输出,在那里可以看到正常的跟踪/调试消息.

我已经尝试了每次尝试我用Google搜索的示例包括相应侦听器的配置文件设置,将侦听器添加到Trace.Listeners集合,自定义ConsoleTraceListener类型等等.我甚至只编译到发行版并运行可执行文件(绝对没有任何作用).

我错过了什么?

Jon*_*eet 6

回答您对Orion Adrian的回答的评论......

a ConsoleTraceListenterany 的要点TraceListener不是直接调用它 - 它是将它添加到跟踪侦听器集合中,以便代码的其余部分只需要调用Trace.Write等.例如:

using System;
using System.Diagnostics;

class Test
{
    static void Main()
    {
        ConsoleTraceListener listener = new ConsoleTraceListener();
        Trace.Listeners.Add(listener);

        DoSomething();

        Trace.Flush();
    }

    static void DoSomething()
    {
        DoSomethingElse();
    }

    static void DoSomethingElse()
    {
        // We don't want to have to pass all our logging
        // baggage down this far
        Trace.WriteLine("In DoSomethingElse");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用TRACE定义编译,您可以简单地登录到控制台.就个人而言,我更喜欢使用log4net等更多"oomph"进行日志记录,但跟踪是一个良好的开端.