2009-07-15 9 views
7

Il listener seguente creerà una voce di evento quando viene chiamato Trace.WriteLine. Se la fonte non esiste, la creerà nel canale log predefinito che è 'Applicazione'. Voglio specificare un altro canale di log predefinito, ma dopo aver cercato 45 minuti non riesco a trovare la soluzione. Qualche idea?Come indirizzare EventLogTraceListener per creare in un registro specifico

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

risposta

3

Non sicuro che sia possibile tramite la configurazione.

Sebbene EventLogTraceListener accetti un diverso registro eventi come parametro nel costruttore. Sfortunatamente, la classe è sigillata, quindi non puoi semplicemente derivarne e passare un valore diverso per il costruttore.

Sebbene tu possa seguire questo approccio e costruire la tua classe (sembra abbastanza semplice). E poi fai riferimento a quel tipo nella tua configurazione. http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx

-1

Si può trovare una soluzione per questo in questo post del blog:

http://weblogs.asp.net/psteele/438936

Funziona davvero!

+1

si dovrebbe mettere le parti essenziali nel tuo post di risposta e aggiungere il collegamento come un punto di riferimento. –

0

È possibile repointare l'ascoltatore nella prima riga di codice.

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

Il valore possono essere immagazzinate nella sezione <appSettings> del file di configurazione in modo che sia ancora configurazione basata su:

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