Nous constatons un problème intermittent sur les machines de développement et de production dans lequel nos fichiers journaux ne sont pas connectés.
Lors de l'exécution en développement et débogage à l'aide de 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: \ dossier \ 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 à:
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
Notre solution de contournement actuelle pour le problème consiste à renommer le dernier fichier journal. Nous nous attendrions bien sûr à ce que cela échoue (en raison du verrouillage de fichier susmentionné), mais ce n'est normalement pas le cas. Une ou deux fois, le changement de nom a échoué en raison d'un verrou du processus aspnet_wp.exe .
Notre section de configuration log4net est illustré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 mentionné, nous voyons cela par intermittence sur les machines, mais une fois que le problème survient, il persiste.
la source
Soyez également conscient de la FAQ de log4net :
la source
Si tu as
et ajouter
alors il y aura une erreur pendant le roulement. Le premier processus créera le nouveau fichier et renommera le fichier actuel. Ensuite, le processus suivant fera de même et prendra le fichier nouvellement créé et écrasera le fichier nouvellement renommé. Résultat: le journal du dernier jour est vide.
la source