自定义跟踪侦听器实现。 Write和WriteLine有问题的行为

时间:2009-08-27 10:54:21

标签: c# logging

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

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中传递。

1 个答案:

答案 0 :(得分:3)

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

PS:在添加Custom TraceListener的实例之前,使用Clear()方法删除跟踪侦听器的默认实例。