2009-07-15 22 views
7

Poniższy listener utworzy wpis zdarzenia po wywołaniu Trace.WriteLine. Jeśli źródło nie istnieje, utworzy je w domyślnym kanale dziennika, którym jest "Aplikacja". Chcę określić inny domyślny kanał dziennika, ale po wyszukaniu 45 minut nie wydaje mi się, aby znaleźć rozwiązanie. Jakieś pomysły?Jak skierować EventLogTraceListener do utworzenia w określonym dzienniku

<configuration> 
    <system.diagnostics> 
    <trace autoflush="false" indentsize="4"> 
     <listeners> 
     <add name="myListener"    
      type="System.Diagnostics.EventLogTraceListener" 
      initializeData="Source">   
     </add> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

Odpowiedz

3

Nie jesteś pewien, że możesz to zrobić za pomocą config.

Chociaż EventLogTraceListener akceptuje inny dziennik zdarzeń jako parametr w konstruktorze. Niestety, klasa jest zapieczętowana, więc nie można jej po prostu wyprowadzić i przekazać innej wartości konstruktorowi.

Chociaż można zastosować to podejście i skonstruować własną klasę (wydaje się dość prosta). A następnie odwołaj ten typ do swojej konfiguracji. http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx

0

Można powtórzyć odsłuchiwanie w pierwszym wierszu kodu.

Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"]; 

Wartość ta może być przechowywana w sekcji <appSettings> pliku konfiguracyjnym więc nadal konfiguracja oparta jest:

<appSettings> 
    <add key="MyCustomEventLogName" value="CustomEventLogName" /> 
</appSettings>