Estamos vendo um problema intermitente nas máquinas de desenvolvimento e produção em que nossos arquivos de log não são registrados.
Ao executar em desenvolvimento e depuração usando Visual Studio, obtemos as seguintes mensagens de erro 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 ele 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 ser semelhante a:
<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 não. Uma ou duas vezes a renomeação falhou devido a um bloqueio do processo aspnet_wp.exe .
Nossa seção de configuração 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]
"/>
<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>
Conforme mencionado, vemos isso intermitentemente nas máquinas, mas quando o problema acontece, ele persiste.
fonte
Também esteja ciente das Perguntas frequentes do log4net :
fonte
Se você tem
e adicione
então haverá um erro enquanto a rolagem acontece. O primeiro processo criará o novo arquivo e renomeará o arquivo atual. Então o próximo processo fará o mesmo e pegará o arquivo recém-criado e sobrescreverá o arquivo recém-renomeado. Resultando no logfiel do último dia vazio.
fonte