Estamos viendo un problema intermitente en las máquinas de desarrollo y producción por el cual nuestros archivos de registro no se registran.
Cuando se ejecuta en desarrollo y depuración con Visual Studio, obtenemos los siguientes mensajes de error de log4net en la ventana de salida de VS:
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.
El proceso no puede acceder al archivo 'C: \ folder \ file.log' porque está siendo utilizado por otro proceso.
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 sección de configuración debería verse así:
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
Nuestra solución actual para el problema es cambiar el nombre del último archivo de registro. Por supuesto, esperaríamos que esto fallara (debido al bloqueo de archivo mencionado anteriormente), pero normalmente no es así. Una o dos veces el cambio de nombre ha fallado debido a un bloqueo del proceso aspnet_wp.exe .
Nuestra sección de configuración de log4net se muestra a continuación:
<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>
Como se mencionó, estamos viendo esto de manera intermitente en las máquinas, pero una vez que ocurre el problema, persiste.