2010-08-26 20 views
5

Estoy usando la siguiente configuración de log4net. Intento escribir registros de rendimiento en un archivo separado pero el resultado va a ambos archivos. A pesar de que estoy especificando:Cómo evitar que log4net escriba en dos archivos separados

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("PerformanceMetricsLogger"); 

¿Cómo puedo dejar de log4net de la escritura a la appender por defecto en este caso?

<log4net> 
    <!-- Define some output appenders --> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">  
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="-1" /> 
    <maximumFileSize value="2000KB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 

    <appender name="RollingFileAppenderForPerformance" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.peformance.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="-1" /> 
    <maximumFileSize value="2000KB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 

    <!-- Setup the root category, add the appenders and set the default level --> 
    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingFileAppender" /> 
    </root> 

    <logger name="PerformanceMetricsLogger"> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingFileAppenderForPerformance" /> 
    </logger> 
</log4net> 

Respuesta

7

Todos los niveles de registrador debajo de raíz heredan los anexos del registrador de raíz. Es por eso que sus mensajes se registran dos veces. Para deshabilitar la herencia de su registrador establezca su parámetro additivity como falso:

<logger additivity="false" name="PerformanceMetricsLogger"> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingFileAppenderForPerformance" /> 
    </logger> 
Cuestiones relacionadas