如何更改TextWriterTraceListener的输出格式?

时间:2010-02-02 05:52:25

标签: .net debugging trace

默认实现将输出显示为':::',现在我不想要这种格式,我想切断源名称和偶数,因为它对我来说完全没用。 有什么简单的方法可以实现吗?

我目前的解决方法是从TextWriterTraceListener派生并覆盖TrackEvent方法。使用reflector来复制默认实现,只需删除writerHeader函数调用。

1 个答案:

答案 0 :(得分:0)

您可以从TextWriterTraceListener创建派生类并重写TraceEvent以更改输出格式。最好覆盖所有TraceEvent方法。 e.g。

class TextWriterTraceListenerCustomOutput:TextWriterTraceListener
{
    public TextWriterTraceListenerCustomOutput(string fileName):base(fileName)
    {
    }

    public override void Write(string message)
    {
        base.Write(String.Format("[{0}]:{1}",DateTime.Now,message));
    }

    public override void WriteLine(string message)
    {
        base.WriteLine(String.Format("[{0}]:{1}", DateTime.Now, message));
    }

    public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message)
    {
        //base.TraceEvent(eventCache, source, eventType, id, message);
        if(String.IsNullOrEmpty(message)) return;
        WriteLine(String.Format("{0}:{1}:{2}:{3}",source, eventType,Enum.GetName(typeof(LogId),id),message.Replace("\r",string.Empty).Replace("\n",string.Empty)));
    }
}