c# - 如何连接 Debug.Writeline() 和 Debug.Write() 的替代目的地

标签 c# asp.net .net

我是 .net 世界的新手,我有一个包含数百个 Debug.Writeline 和 Debug.Write 的解决方案。 我需要将消息发送到文本文件和数据库,而不是传统的输出。

替换所有 Debug.XXX 行并将这些特定消息发送到我的目的地是一项乏味且不推荐的任务。

那么我应该如何连接另一个目的地?

一种方法是覆盖无法正常工作的 Debug.Write() 功能。

请帮助我并提前致谢

最佳答案

可以继承自己的TraceListener :

public class MyTraceListener : TraceListener
{
    // called (in debug-mode) when Debug.Write() is called
    public override void Write(string message)
    {
        // handle/output "message" properly
    }
    // called (in debug-mode) when Debug.WriteLine() is called
    public override void WriteLine(string message)
    {
        // handle/output "message" properly
    }
}

然后您需要注册此类的一个实例(使用 Trace.Listeners.Add():

var myListener = new MyTraceListener();
Trace.Listeners.Add(myListener);

现在所有对 Debug.Write()Debug.WriteLine() 的调用都被转发到 MyTraceListener 实例的相应方法. 请注意 然而,这仅发生在 DEBUG 构建中。在 RELEASE 版本中,对 Debug.Write()Debug.WriteLine() 的调用不会执行任何操作。

关于c# - 如何连接 Debug.Writeline() 和 Debug.Write() 的替代目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864852/

相关文章:

c# - LINQ to Entities 仅支持无参数构造函数和初始值设定项

c# - 从代码中找到ControlTemplate

ASP.NET UpdatePanel 隐藏/显示行取决于单选按钮

asp.net - 有没有办法向 ASP.NET Label 服务器控件添加 onclick 事件?

c# - 相当于控件的 "On_Load"表单是什么?

c# - 如何防止嵌入资源的资源程序集生成

.NET Core、Windows Azure 存储。在控制台应用程序上崩溃但在网络应用程序上不崩溃?

c# - MSTest - 多次执行测试

c# - 如何在 C# 中制作可以从串口接收数据的 Windows 窗体应用程序

c# - 如何使用C#在ASP.NET背后的代码中访问HTML5音频play()事件