Nous constatons un problème intermittent sur les machines de développement et de production où nos fichiers journaux ne sont pas enregistrés.
Lors de l'exécution en développement et du débogage avec Visual Studio, nous obtenons les messages d'erreur log4net suivants dans la fenêtre de sortie VS :
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.
Le processus ne peut pas accéder au fichier ' C:\folder\file.log car il est utilisé par un autre processus.
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 section de configuration devrait ressembler à ceci :
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
Notre solution actuelle pour résoudre ce problème consiste à renommer le dernier fichier journal. Nous nous attendons bien sûr à ce que cette opération échoue (en raison du verrouillage de fichier susmentionné), mais ce n'est généralement pas le cas. Une ou deux fois, le renommage a échoué à cause d'un verrouillage de l'application aspnet_wp.exe processus.
Notre section de configuration de log4net est présentée ci-dessous :
<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>
Comme nous l'avons mentionné, nous constatons ce problème par intermittence sur les machines, mais une fois que le problème se produit, il persiste.