2017-05-21 2 views
0

TraceSource/TraceListenerを使用するようにプロジェクトを設定し、デフォルトのリスナーを追加してnew ConsoleTraceListener()を使用してデータを出力ウィンドウに記録しました。私はすべての行にぎこちない接頭辞がたくさんあるよ。これを防ぐ方法はありますか?.NETでTraceSourceを使用してくるジャンクの接頭辞を防ぐ

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のみ。

+0

可能な重複します。http:// stackoverflowの。 com/questions/12685581/tracelistener-headers-and-footers) – apocalypse

答えて

1

私は、トレースソースのリスナーに明示的に書き込みを行い、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? 
    } 
} 

が次にあなたがそれを呼び出すことができます:[のTraceListenerのヘッダーとフッター](の

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

ありがとうございました!私の問題を解決しました... –