2009-03-06 10 views
5

Estoy configurando un SMPTAppender para enviar por correo electrónico archivos de registro cuando hay un error en el código de producción. Hay algunas máquinas, como máquinas de prueba que son locales, donde no quiero que se envíe el correo electrónico.Configurar Log4Net para no usar smtp appender si ejecuta una determinada máquina

He intentado utilizar la variable de entorno NOMBREDEEQUIPO en un propertyfilter, pero esto no funcionó:

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

he utilizado ComputerName en un appender archivo de la siguiente manera:

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

Esto también no funcionó (ni lo esperaba):

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

¿Hay alguna manera de utilizar e variables de entorno en un filtro de propiedad? Otras sugerencias bienvenidas.

Respuesta

5

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

El filtro debe tener este aspecto:

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

Tenga en cuenta también el uso AcceptOnMatch, no aceptó.

Cuestiones relacionadas