防止在.NET中使用TraceSource带来的垃圾前缀

时间:2017-05-21 07:40:30

标签: c# .net debugging trace

我只是设置我的项目以使用TraceSource / TraceListener并添加了一个默认侦听器,使用new ConsoleTraceListener()将数据记录到输出窗口。我每行收到很多垃圾前缀。有什么方法可以阻止这种情况吗?

FluentFTP Verbose: 0 : InterNetwork: 123.123.123.123
FluentFTP Verbose: 0 : 421 Too many connections (8) from this IP
FluentFTP Verbose: 0 : Disposing FtpClient object...
FluentFTP Information: 0 : QUIT

我想要跟踪的字符串:

InterNetwork: 123.123.123.123
421 Too many connections (8) from this IP
Disposing FtpClient object...
QUIT

我使用的语法是:

private static readonly TraceSource m_traceSource = new TraceSource("FluentFTP") {
    Switch = new SourceSwitch("sourceSwitch", "Verbose") { Level = SourceLevels.All }
};
...
m_traceSource.TraceEvent(TraceLevelTranslation(eventType), 0, message);

修改:此问题有hereherehere的答案,但其中没有一个涵盖了无法修改TraceListener的用例,只有TraceSource。

1 个答案:

答案 0 :(得分:1)

我通过显式写入跟踪源的侦听器而不是调用TraceEvent来做类似的事情。如果您愿意这样做,您可以执行类似以下扩展方法的操作。请注意,它必须吃掉跟踪侦听器抛出的所有异常:

m_TraceSource.Emit( TraceLevelTranslation(eventType), message );

然后你可以用:

来调用它
{{1}}