2013-10-03 10 views
5

Obsługuję dużą, starą aplikację. Kod używa NLog oraz Debug.WriteLine i Trace.WriteLine. Próbuję przekierować linie Debug.WriteLine i Trace.WriteLine do pliku Nlog. Tak, aby wszystko było w jednym miejscu. W tej chwili niektóre znajdują się w oknie Output, a niektóre w pliku dziennika.Jak rejestrować komunikaty System.Diagnostics.Trace i System.Diagnostics.Debug do pliku NLog?

I followed this article to use the NLogTraceListener

Artykuł ten ma System.Net i System.Net.Sockets coraz przerzucane do pliku dziennika. Próbowałem i działa. Widzę, jak komunikaty System.Net i System.Net.Sockets są rejestrowane w pliku. This SO article opisuje to samo - i działa.

Co nie działa, to logowanie własnych wiadomości z moich własnych przestrzeni nazw i klas do pliku dziennika.

System.Diagnostics.Debug.WriteLine("This won't end up in the log file"); 
System.Diagnostics.Trace.WriteLine("This won't end up in the log file"); 

Próbowałem zmienić nazwy źródeł na obszary nazw z mojej aplikacji. Nie działa. Nie mogę uzyskać własnych WriteLines do zalogowania się do pliku. Nadal pojawiają się w oknie wyjściowym Visual Studio.

Na przykład:

<system.diagnostics> 
     <sources> 
      <source name="MyAppNamespace" switchValue="All"> 
       <listeners> 
        <add name="nlog" /> 
       </listeners> 
      </source> 
     </sources> 
     <sharedListeners> 
      <add name="nlog" type="NLog.NLogTraceListener, NLog" /> 
     </sharedListeners> 
    </system.diagnostics> 

Wyraźna NLog połączenia są zalogowaniu do pliku dziennika tylko dobrze:

NLog.LogManager.GetCurrentClassLogger().Trace("This Works"); 

Odpowiedz

12

skonfigurowaniu do TraceSource zalogować do nlog, ale Twoja wypowiedź ślad ISN Korzystam z tego TraceSource.

Spróbuj:

<system.diagnostics> 
    <trace> 
     <listeners> 
      <add name="nlog" type="NLog.NLogTraceListener, NLog" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 

Albo użyć TraceSource skonfigurowaniu, np .:

TraceSource source = new TraceSource("MyAppNamespace"); 
source.TraceEvent(TraceEventType.Warning, 2, "File Test not found"); 
Powiązane problemy