Pregunta

Estoy configurando un SMPTAppender para enviar archivos de registro por correo electrónico cuando hay un error en el código de producción. Hay algunas máquinas, como las máquinas de prueba que son locales, a las que no deseo que se envíe el correo electrónico.

Intenté usar la variable de entorno COMPUTERNAME en un filtro de propiedad, pero esto no funcionó:

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

He usado ComputerName en un archivo adjunto como este:

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

Esto tampoco funcionó (ni lo esperaba):

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

¿Hay alguna forma de usar variables de entorno en un filtro de propiedades? Otras sugerencias son bienvenidas.

¿Fue útil?

Solución

Está utilizando el valor de clave incorrecto. La colección LoggingEvent.Properties se rellena con la propiedad HostName, que tiene el " log4net: HostName " firma.

Tu filtro debería verse así:

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

Tenga en cuenta que también debe utilizar AcceptOnMatch, no Aceptar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top