繁体   English   中英

System.Diagnostics.Trace,最简单的可编程配置

[英]System.Diagnostics.Trace, simplest possible programmatic configuration

以下程序不会打印文本“This is a trace”。 没有app.config。

我的问题是,如何修改以下代码(只有代码,而不是任何配置文件),以便在调用t.TraceEvent时传递的消息出现在控制台窗口中

using System;
using System.Collections.Generic;
using System.Diagnostics;

namespace ConsoleApplication1 {
    class Program {
        static void Main(string[] args) {
            Trace.Listeners.Add(
                new TextWriterTraceListener(Console.Out)
            );

            TraceSource t = new TraceSource("Test");
            t.Listeners.AddRange(Trace.Listeners);
            t.TraceEvent(TraceEventType.Critical, 1, "This is a trace");

            Console.Write("Press enter to quit");
            Console.ReadLine();
        }
    }
}

请参阅跟踪侦听器

DefaultTraceListener将写入“输出”窗口。 要将消息发送到TraceListener,只需要调用Trace.WriteLine("my output string");

// C#
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add( 
    new System.Diagnostics.TextWriterTraceListener(Console.Out));

编辑:为响应您的评论,以下代码将在控制台窗口中的“按Enter退出”之前立即打印“我的输出字符串”:

  static void Main(string[] args)
  {
     Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

     Trace.WriteLine("my output string");

     Console.Write("Press enter to quit");
     Console.ReadLine();
  }

编辑2:在重新阅读你的问题之后,我意识到你特意尝试使用TraceSource ,在这种情况下你只需要设置Switch,这样它就知道应该将哪个级别的跟踪事件发送到控制台窗口。 添加侦听器后尝试添加此内容:

SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
t.Switch = sourceSwitch;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM