2010-02-02 3 views
0

реализация по умолчанию показывает результат как '::', теперь я не хочу этого формата, я хочу отключить имя ресурса и eventid, потому что это абсолютно бесполезно для меня. Есть ли какой-либо простой способ, я могу это сделать?Как изменить формат вывода TextWriterTraceListener?

Моим текущим обходным путем является вывод из TextWriterTraceListener и переопределение метода TrackEvent. используйте отражатель для копирования реализации по умолчанию и просто удалите вызов функции writerHeader.

+0

какая технология вы используете? –

+0

DotNet, C#, я использую по умолчанию TextWriterTraceListener –

ответ

0

вы можете создать производный класс из TextWriterTraceListener и переопределить TraceEvent для изменения формата вывода. Было бы лучше переопределить все методы TraceEvent. , например.

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))); 
    } 
} 
Смежные вопросы