2015-12-28 10 views
5

O ile widzę, istnieją dwa sposoby tworzenia komunikatów śledzenia w .NET.Jakie źródło śledzenia jest używane przez System.Diagnostics.Trace.WriteLine?

  1. Statyczne metody System.Diagnostics.Trace:

    Trace.WriteLine("Something happened"); 
    
  2. metody instancji System.Diagnostics.TraceSource:

    var ts = new TraceSource("TraceTest"); 
    ts.TraceInformation("Something happened"); 
    

W moim pliku app.config, mogę dodać do niej śladu słuchacz dla wszystko:

<system.diagnostics> 
    <trace> 
     <listeners> 
      ... 
     </listeners> 
    </trace> 
</system.diagnostics> 

lub dla jednego konkretnego źródła Ślad:

<system.diagnostics> 
    <sources> 
     <source name="..."> 
      <listeners> 
       ... 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 

moje pytanie

Jeśli użyć pierwszej metody (metody statyczne System.Diagnostics.Trace), której nazwa źródło śladu Jest używane?

Sprawdziłem numer MSDN page of System.Diagnostics.Trace, ale nie znalazłem tam odpowiedzi.

+0

I nie myśl, że używa źródła. Działa jak rodzaj "globalnego źródła". Dwa równoległe API, prawdopodobnie historyczny relikt. –

+0

@HenkHolterman: To całkiem możliwe (źródła śledzenia zostały dodane w wersji 2.0), ale nie znalazłem jeszcze na to dowodu. Możliwe jest jednak również, że dodali konkretne źródło tych "starszych" operacji. – Heinzi

Odpowiedz

3

sprawdziłem źródło Trace.WriteLine z JustDecompile i wyliczenia wszystkich słuchaczy i wysyła wiadomość do wszystkich:

   foreach (TraceListener listener in TraceInternal.Listeners) 
       { 
        if (listener.IsThreadSafe) 
        { 
         listener.WriteLine(message); 
         if (!TraceInternal.AutoFlush) 
         { 
          continue; 
         } 
         listener.Flush(); 
        } 
        else 
        { 
         lock (listener) 
         { 
          listener.WriteLine(message); 
          if (TraceInternal.AutoFlush) 
          { 
           listener.Flush(); 
          } 
         } 
        } 
       } 

jednak zapomnieć o tym brzydkie połączenia śladu, użyj ETW Eventsource dla much better tracing/logging

+0

Dzięki za odpowiedź. Niestety nie widzę odpowiedzi na to pytanie. – Heinzi

Powiązane problemy