2009-03-06 4 views
5

Je configure un SMPTAppender pour envoyer par courrier électronique des fichiers journaux en cas d'erreur dans le code de production. Il y a des machines, comme les machines de test qui sont locales, où je ne veux pas que l'email soit envoyé.Configurer Log4Net pour ne pas utiliser smtp appender si vous exécutez une certaine machine

J'ai essayé d'utiliser l'environnement COMPUTERNAME variable dans un propertyfilter, mais cela ne fonctionne pas:

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

Je l'ai utilisé ComputerName dans un appender comme fichier ceci:

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

Cela a également n'a pas fonctionné (et ne m'y attendais pas):

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

Existe-t-il un moyen d'utiliser e Variables de l'environnement dans un filtre de propriétés? Autres suggestions sont les bienvenues.

Répondre

5

Vous utilisez la valeur de clé incorrecte. La collection LoggingEvent.Properties est remplie avec la propriété HostName, qui a la signature "log4net: HostName".

Votre filtre devrait ressembler à ceci:

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

Notez également utiliser AcceptOnMatch, Ne pas accepter.

Questions connexes