Przerywany problem z zablokowanym plikiem log4net RollingFileAppender

Obserwujemy sporadyczne problemy z programowaniem i produkcją maszyn, w których nasze pliki dziennika nie są logowane.

Podczas uruchamiania i debugowania przy użyciu programu Visual Studio otrzymujemy następujące komunikaty o błędach log4net w oknie wyjściowym VS:

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

Proces nie może uzyskać dostępu do pliku „C: folder plik.log”, ponieważ jest używany przez inny proces.

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.

Sekcja konfiguracji powinna wyglądać następująco:

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

Nasze obecne obejście problemu polega na zmianie nazwy ostatniego pliku dziennika. Oczywiście oczekiwalibyśmy, że to się nie powiedzie (ze względu na wspomnianą blokadę pliku), ale normalnie tak się nie dzieje. Raz lub dwa razy zmiana nazwy nie powiodła się z powodu blokady zaspnet_wp.exe proces.

Nasza sekcja konfiguracji log4net jest pokazana poniżej:

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

Jak już wspomnieliśmy, widzimy to sporadycznie na maszynach, ale gdy problem się wydarzy, nie ustępuje.

questionAnswers(3)

yourAnswerToTheQuestion