Intermittent log4net RollingFileAppender fichier verrouillé problème
Nous assistons à un problème intermittent sur le développement et la production de machines au moyen de laquelle les fichiers journaux ne sont pas d'être connecté à.
Lors de l'exécution dans le développement et le débogage à l'aide de Visual Studio, on obtient l'log4net messages d'erreur dans le VS de la fenêtre de sortie:
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" parce qu'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 actuelle solution de contournement pour ce problème, renommez le dernier fichier journal. Nous sommes évidemment s'attendre à l'échec (en raison de ladite verrouillage de fichier), mais il n'a normalement pas. Une fois ou deux fois par le changement de nom a échoué en raison d'un lock à partir de la aspnet_wp.exe processus.
Notre log4net section de configuration est indiqué 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é précédemment, nous assistons à présent par intermittence sur les machines, mais une fois que le problème arrive, il persiste.
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter
à votre
<appender />
élément. Il y a un impact sur les performances, car cela signifie que log4net permet de verrouiller le fichier, écrire, et de le déverrouiller pour chaque opération d'écriture (par opposition au comportement par défaut, qui acquiert et détient sur la serrure pour une longue période).L'une des conséquences de ce comportement par défaut, c'est que si vous êtes en utilisant un site Web qui est en cours d'exécution en vertu de plusieurs processus de travail en cours d'exécution sur la même machine, chacun va essayer d'acquérir et de maintenir le verrou indéfiniment, et deux d'entre eux sont juste de perdre. Changement de serrures modèle pour les minimes serrure fonctionne autour de cette question.
(Lors du débogage, disgracieux cessations d'emploi et de le faire tourner beaucoup de nouveaux processus de travail est exactement le genre de chose qui est susceptible de se produire.)
Bonne chance!
Également être conscients de la log4net FAQ:
Si vous avez
et ajouter
puis il y aura une erreur lors de l'roulant qui se passe.
Le premier processus va créer le nouveau fichier et le renommer le fichier en cours.
Ensuite, à côté des proces va faire de même et de prendre le fichier nouvellement créé et remplacer le fichier nouvellement renommé.
Résultant dans la logfiel pour le dernier jour étant vide.