如何重定向C#中的调试输出

本文关键字:调试 输出 重定向 | 更新日期: 2023-09-27 18:27:54

目前,我使用以下内容编写了许多状态消息:

Debug.Writeline("This is my status message");

我希望能够创建一个方法,允许我通过Debug输出消息,或者将它们重定向到UI中的文本框。但是,Debug和Textbox对象不兼容。我如何做到这一点,使调用方可以使用相同的消息来生成输出,并让调用方法决定将其发送到哪里(即,发送到调试、UI,甚至日志文件)?

如何重定向C#中的调试输出

您可以创建自己的从TraceListener派生的类,如Trace listener写入文本框(WPF应用程序)的已接受答案中所述。

注意:接受的答案详细说明了如何为C#WinForms创建自定义跟踪侦听器,尽管问题是关于WPF的。

创建自己的日志记录类,桥接调试类

interface ILog {
   public void Log();
}
public DebugLog : ILog {
  public DebugLog(Debug d) {} //ctor that takes Debug Object
  public void Log(){}
}
public WindowLog : ILog {
  public WindowLog(Text t) {} //ctor that takes window log
  public void Log(){}
}