Configurez Log4Net pour ne pas utiliser smtp appender si vous utilisez une machine donnée

StackOverflow https://stackoverflow.com/questions/620248

  •  03-07-2019
  •  | 
  •  

Question

Je suis en train de configurer un SMPTAppender pour envoyer des fichiers journaux par courrier électronique en cas d'erreur dans le code de production. Certaines machines, telles que les machines de test, sont locales et ne doivent pas être envoyées par courrier électronique.

J'ai essayé d'utiliser la variable d'environnement COMPUTERNAME dans un filtre de propriétés, mais cela n'a pas fonctionné:

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

J'ai utilisé ComputerName dans un appender de fichier comme ceci:

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

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

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

Est-il possible d’utiliser des variables d’environnement dans un filtre de propriété? Autres suggestions bienvenues.

Était-ce utile?

La solution

Vous utilisez une valeur de clé incorrecte. La collection LoggingEvent.Properties contient la propriété HostName, qui possède le code " log4net: HostName " Signature.

Votre filtre devrait ressembler à ceci:

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

Notez également d’utiliser AcceptOnMatch, pas Accept.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top