2009-03-06 6 views
5

Sto configurando un SMPTAppender per inviare i file di log quando c'è un errore nel codice di produzione. Esistono alcune macchine, ad esempio macchine di prova locali, in cui non desidero inviare l'e-mail.Configurare Log4Net per non utilizzare l'appender smtp se si esegue un certo computer

ho cercato di utilizzare la variabile d'ambiente COMPUTERNAME in un propertyfilter, ma questo non ha funzionato:

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="COMPUTERNAME" /> 
    <StringToMatch value="myComputerName" /> 
    <Accept value="false" /> 
</filter> 

ho usato NomeComputer in un file appender come questo:

<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" /> 

Questo anche non ha funzionato (né me lo aspettavo):

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="${COMPUTERNAME}" /> 
    <StringToMatch value="myComputerName" /> 
    <Accept value="false" /> 
</filter> 

C'è un modo per utilizzare e variabili ambientali in un filtro di proprietà? Altri suggerimenti sono benvenuti

risposta

5

Si sta utilizzando il valore chiave errato. La raccolta LoggingEvent.Properties è popolata con la proprietà HostName, che ha la firma "log4net: HostName".

Il filtro dovrebbe essere simile a questo:

<filter type="log4net.Filter.PropertyFilter"> 
    <Key value="log4net:HostName" /> 
    <StringToMatch value="computerToExclude" /> 
    <AcceptOnMatch value="false" /> 
</filter> 

Nota anche utilizzare AcceptOnMatch, non accetta.

Problemi correlati