【问题标题】:ConsoleTraceListener: Don't write to VS output windowConsoleTraceListener:不要写入 VS 输出窗口
【发布时间】:2011-12-02 13:54:14
【问题描述】:

我有一个跟踪列表器(DefaultTraceListener 派生)将特殊格式写入 VS 输出窗口(因此双击 -> 转到源代码工作)。我删除了标准 VS 输出默认跟踪侦听器并将其替换为这个。
但我不希望在我的控制台中显示这种长格式,所以我有一个单独的 ConsoleTraceLister 派生侦听器来提供更短的版本。问题是这也会写入 VS 输出,因此窗口跟踪会加倍。
如何阻止 ConsoleTraceLister 派生的侦听器写入 VS 输出窗口?

【问题讨论】:

  • 通过 .config 或在代码中显式删除默认跟踪侦听器。 msdn.microsoft.com/en-us/library/…
  • @HansPassant 对不起,我应该提到我已经删除了默认的跟踪侦听器。问题是我的控制台跟踪侦听器也写入 VS 输出窗口。我已经更新了问题以澄清。
  • 单独的监听器是怎么回事?阻止这种情况的一种简单方法是取消选中项目 + 属性、调试选项卡中的托管进程。

标签: c# visual-studio logging trace


【解决方案1】:

//这里有些东西你可以试试,不确定是否有帮助

using System;
using System.IO;
using System.Diagnostics;


public class Test
{
    public static void Main()
    {
        TextWriterTraceListener myWriter = new
        TextWriterTraceListener(System.Console.Out);
        Debug.Listeners.Add(myWriter);
        Debug.WriteLine("Test output 1 ");
        Stream myFile = File.Create("output.txt");
        TextWriterTraceListener myTextListener = new
        TextWriterTraceListener(myFile);
        Debug.Listeners.Add(myTextListener);
        Debug.WriteLine("Test output 2 ");


        if (!EventLog.SourceExists("Demo"))
        {
            EventLog.CreateEventSource("Demo", "Demo");
        }


        Debug.Listeners.Add(new EventLogTraceListener("Demo"));
        Debug.WriteLine("Test output 3 ");
        myWriter.Flush();
        myWriter.Close();
        myFile.Flush();
        myFile.Close();
    }
}

【讨论】:

  • 感谢您的工作-我已经编辑了您的答案以阐明解决方案-我希望没问题。干杯。
  • 没问题我很高兴能帮上忙
猜你喜欢
  • 1970-01-01
  • 2018-10-11
  • 2022-11-05
  • 2023-03-24
  • 2017-08-11
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
相关资源
最近更新 更多