2010-10-30 15 views
5

estoy configuración de log4net con:log4net espera a que grupo de aplicación de reciclaje antes de conectarse a la base de datos MSSQL2008

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "../ProjectName/Log4Net.config", Watch = true)] 

tengo 2 appenders configurados: 1. Un AdoNetAppender el registro en una tabla de registro en una base de datos MSSQL2008. 2. Un FileAppender que sólo se parece a esto:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="c:\log-file.txt" /> 
    <appendToFile value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    </layout> 
</appender> 

El problema es que cuando una acción se registra, que aparece inmediatamente en el diario de archivo.txt. No aparece como una entrada en la base de datos hasta que lo haga iisreset, recompile el código web o recicle el grupo de aplicaciones.

La configuración parece correcta ya que la acción finalmente se registra en la base de datos. Simplemente no entiendo por qué la demora.

¿Alguien puede darme una razón o decirme cómo solucionarlo?

Respuesta

8

AdoNetAppender es un apilador con búfer. Si desea que escriba directamente en la base de datos, debe establecer el tamaño del búfer en 1:

<bufferSize value="1" /> 
+0

Gracias por ^^ ESTA respuesta Stefan, muy apreciada. –

+0

Gran respuesta. Solo recibía registros en mi mesa cada pocos minutos o cuando reciclaba el grupo de aplicaciones de IIS. No pude entenderlo hasta que vi esta publicación sobre el tamaño del búfer ... tiene sentido. Gracias Stefan – barneymc

Cuestiones relacionadas