Problema de arquivo bloqueado do log4net RollingFileAppender intermitente

Estamos vendo um problema intermitente nas máquinas de desenvolvimento e produção, pelo qual nossos arquivos de log não estão sendo conectados.

Ao executar o desenvolvimento e a depuração usando o Visual Studio, obtemos as seguintes mensagens de erro do log4net na janela de saída do VS:

log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.

O processo não pode acessar o arquivo 'C: \ folder \ file.log' porque está sendo usado por outro 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.

A seção de configuração deve se parecer com:

<section
  name="log4net"
  type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

Nossa solução atual para o problema é renomear o último arquivo de log. É claro que esperamos que isso falhe (devido ao bloqueio de arquivo mencionado anteriormente), mas normalmente isso não acontece. Uma ou duas vezes a renomeação falhou devido a um bloqueio doaspnet_wp.exe processo.

Nossa seção de configuração do log4net é mostrada abaixo:

<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>

Como mencionado, estamos vendo isso intermitentemente nas máquinas, mas, quando o problema acontece, ele persiste.

questionAnswers(3)

yourAnswerToTheQuestion