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]&#xA;"/>
      <footer value="[Footer]&#xA;"/>
      <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.