domingo, 12 de febrero de 2012

log4net apagar NHibernate Logging


cuando NHibernate escribe en tus archivos de log, miles y miles de lineas de mensajes de depuración, que al final te resultan inútiles, y solo ocultan otra información que es realmente importante. aqui dejo este pequeño segmento de xml, que permite parametrizar el nivel de detalle para el logging de NHibernate.

Configuracion Basica

<log4net> 
  <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="C:\logfile.txt" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" /> 
    </layout> 
  </appender> 
  <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="FileAppender" /> 
  </root> 
</log4net>

lo que debemos hacer es agregar el siguiente segmento

<!-- ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<logger name="NHibernate">
  <level value="ERROR" />
</logger>


y listo, NHibernate ya no llenara tus archivos de log con información irrelevante. a continuacion el ejemplo completo de como debe quedar la configuración, para recibir los mensajes de level DEBUG de todos los loggers, y solo dejar el de NHibernate al level ERROR

<log4net> 
  <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="C:\logfile.txt" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] – %message%newline" /> 
    </layout> 
  </appender> 
  <!-- ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
  <logger name="NHibernate">
     <level value="ERROR" />
  </logger>
  <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="FileAppender" /> 
  </root> 
</log4net>