我想实现一个自定义跟踪侦听器,如下所示:
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中传递。
答案 0 :(得分:3)
实际上Trace.TraceError()方法调用两个方法:首先它将执行Write()来打印/写入错误源以及错误代码和方法WriteLine()来打印/写入错误描述。
PS:在添加Custom TraceListener的实例之前,使用Clear()方法删除跟踪侦听器的默认实例。