Stiamo riscontrando un problema intermittente sulle macchine di sviluppo e produzione per cui i nostri file di registro non vengono registrati.
Durante l'esecuzione in sviluppo e debug utilizzando Visual Studio, vengono visualizzati i seguenti messaggi di errore di log4net nella finestra di output di VS:
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.
Il processo non può accedere al file "C: \ cartella \ file.log" perché è utilizzato da un altro processo.
log4net:ERROR XmlConfigurator: Failed to find configuration section 'log4net' in the application's .config file.
Check your .config file for the <log4net> and <configSections> elements.
La sezione di configurazione dovrebbe essere simile a:
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
La nostra soluzione attuale per il problema è rinominare l'ultimo file di registro. Ovviamente ci aspetteremmo che ciò fallisse (a causa del blocco dei file sopra menzionato), ma normalmente non è così. Una o due volte la ridenominazione non è riuscita a causa di un blocco dal processo aspnet_wp.exe .
La nostra sezione di configurazione di log4net è mostrata di seguito:
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\folder\file.log"/>
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<maximumFileSize value="10MB" />
<maxSizeRollBackups value="100" />
<layout type="log4net.Layout.PatternLayout">
<header value="[Header]
"/>
<footer value="[Footer]
"/>
<conversionPattern value="%date %-5level %logger ${COMPUTERNAME} %property{UserHostAddress} [%property{SessionID}] - %message%newline"/>
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
Come accennato, lo vediamo in modo intermittente sulle macchine, ma una volta che il problema si verifica, persiste.