Configurare Log4Net per non utilizzare l'appender smtp se si esegue un determinato computer

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

  •  03-07-2019
  •  | 
  •  

Domanda

Sto configurando un SMPTAppender per inviare via e-mail i file di registro in caso di errore nel codice di produzione. Ci sono alcune macchine, come le macchine di prova che sono locali, dove non voglio che l'email venga inviata.

Ho provato a utilizzare la variabile di ambiente COMPUTERNAME in un filtro proprietà, ma questo non ha funzionato:

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

Ho usato ComputerName in un appender di file come questo:

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

Anche questo non ha funzionato (né me l'aspettavo):

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

Esiste un modo per utilizzare le variabili di ambiente in un filtro proprietà? Altri suggerimenti benvenuti.

È stato utile?

Soluzione

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

Il tuo filtro dovrebbe apparire così:

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

Nota anche per usare AcceptOnMatch, non Accept.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top