【问题标题】:Custom trace listener implementation. Write and WriteLine problematic behavior自定义跟踪侦听器实现。 Write 和 WriteLine 有问题的行为
【发布时间】:2009-08-27 10:54:21
【问题描述】:

我想实现一个自定义跟踪监听器,如下所示:

public class TraceListener : System.Diagnostics.TraceListener
{

    public override void Write(string message)
    {
      LogToDatabase(message);
    }

    public override void WriteLine(string message)
    {
      LogToDatabase(message);
    }
}

现在假设代码中某处发生错误。在 catch 块中我想做的事

Trace.TraceError(ex.ToString()) 

其中 ex 被捕获异常。 现在的问题是,在我的 MyTraceListener 中,Write 方法和 WriteLine 方法的消息参数不同。更有趣的是 ex.ToString() 生成的字符串在 WriteLine 方法中作为参数传递,而不是在 Write 中。

【问题讨论】:

    标签: c# logging


    【解决方案1】:

    实际上 Trace.TraceError() 方法调用了两个方法:首先它将执行 Write() 以打印/写入错误源以及错误代码,并执行 WriteLine() 方法以打印/写入错误描述。

    PS:在添加Custom TraceListener的实例之前,使用Clear()方法移除默认的trace listener实例。

    【讨论】:

    • 哇。没想到 Write 和 WriteLine 有不同的参数。
    猜你喜欢
    • 2021-02-14
    • 2016-05-12
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多