Мы наблюдаем периодическую проблему на машинах разработки и производства, из-за которой наши файлы журналов не регистрируются.
При запуске в разработке и отладке с использованием Visual Studio мы получаем следующие сообщения об ошибках log4net в окне вывода VS:
log4net:ERROR [RollingFileAppender] Unable to acquire lock on file C:\folder\file.log.
Процесс не может получить доступ к файлу C: \ folder \ file.log, поскольку он используется другим процессом.
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.
Раздел конфигурации должен выглядеть так:
<section
name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
Наш текущий способ решения проблемы - переименовать последний файл журнала. Мы, конечно, ожидаем, что это не удастся (из-за вышеупомянутой блокировки файла), но обычно этого не происходит. Один или два раза переименование не удавалось из-за блокировки процесса aspnet_wp.exe .
Наш раздел конфигурации log4net показан ниже:
<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>
Как уже упоминалось, мы периодически наблюдаем это на машинах, но как только проблема возникает, она сохраняется.
источник
Также обратите внимание на часто задаваемые вопросы о log4net :
источник
Если у вас есть
и добавить
тогда при раскрутке будет ошибка. Первый процесс создаст новый файл и переименует текущий файл. Затем следующий процесс сделает то же самое и возьмет вновь созданный файл и перезапишет только что переименованный файл. В результате логфил за последний день пуст.
источник