2010-10-30 16 views
5

sto configurazione log4net con:log4net attende fino app pool di riciclo prima di accedere alla banca dati mssql2008

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

Ho 2 appenders configurati: 1. Un AdoNetAppender registrazione ad un tavolo Accedere un database mssql2008. 2. Un FileAppender che proprio assomiglia a questo:

<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> 

Il problema è che quando viene registrato un'azione, appare immediatamente nel registro-file.txt. Non appare come una voce nel database finché non eseguo iisreset, ricompilando il codice Web o riciclando il pool di app.

La configurazione sembra corretta poiché l'azione viene infine registrata nel database. Io proprio non capisco perché il ritardo.

Qualcuno può darmi un motivo o dirmi come risolvere il problema?

risposta

8

AdoNetAppender è un appatore con buffer. Se si desidera scrivere direttamente nel database, è necessario impostare la dimensione del buffer su 1:

<bufferSize value="1" /> 
+0

Grazie per ^^ questa risposta Stefan, molto apprezzato. –

+0

Ottima risposta. Ho ottenuto solo i log sul mio tavolo ogni pochi minuti o quando ho riciclato il pool di applicazioni IIS. Non riuscivo a capirlo fino a quando ho visto questo post sulla dimensione del buffer .. ha senso. Grazie Stefan – barneymc

Problemi correlati