C# 防止在.NET中使用TraceSource附带的垃圾前缀

C# 防止在.NET中使用TraceSource附带的垃圾前缀,c#,.net,debugging,trace,C#,.net,Debugging,Trace,我刚刚将我的项目设置为使用TraceSource/TraceListener,并添加了一个默认侦听器,以便使用new consoleTraceStener()将数据记录到输出窗口。我每一行都有很多垃圾前缀。有没有办法防止这种情况 FluentFTP Verbose: 0 : InterNetwork: 123.123.123.123 FluentFTP Verbose: 0 : 421 Too many connections (8) from this IP FluentFTP Verbose

我刚刚将我的项目设置为使用TraceSource/TraceListener,并添加了一个默认侦听器,以便使用
new consoleTraceStener()
将数据记录到输出窗口。我每一行都有很多垃圾前缀。有没有办法防止这种情况

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);

编辑:这个问题有答案,但是没有一个包含不能修改TraceListener的用例,只有TraceSource。

我这样做是通过显式地写入跟踪源的侦听器,而不是调用TraceEvent。如果您愿意这样做,您可以执行以下扩展方法。注意,它必须吃掉跟踪侦听器引发的所有异常:

static object traceSync = new object( );
static int traceMessageNumber;
internal static void Emit( this TraceSource traceSource, TraceEventType eventType, string message, params object[ ] args )
{
  try
  {
    lock ( traceSync )
    {
      var msgNum = Interlocked.Increment( ref traceMessageNumber );

      if ( traceSource.Switch.ShouldTrace( eventType ) )
      {
        //--> format your message like you want...
        var msg = YourMessageFormatter( msgNum, message, args );

        foreach ( TraceListener listener in traceSource.Listeners )
        {
          try
          {
            listener.WriteLine( msg );
            listener.Flush( );
          }
          catch { }
        }
      }
    }
  }
  catch
  {
    //--> maybe we'll write an event log entry?
  }
}
然后,您可以使用以下命令调用它:

m_TraceSource.Emit( TraceLevelTranslation(eventType), message );
可能重复的