log4net + несколько потоков + Роллинг файл appender
У меня это настройки, такой как log4net в такой как log4net.config, чтобы разрешить несколько потоков пишут в один и тот же файл:
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- Minimal locking to allow multiple threads to write to the same file -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logUI.log"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<maxSizeRollBackups value="30"/>
<datePattern value="-yyyyMMdd"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level [%property{identity}] %logger{3} - %message%newline"/>
</layout>
</appender>
но после полуночи новый созданный файл журнала все время перезаписывается, и поэтому в файле есть только последнее событие. После перезагрузки сервера все снова идет хорошо до следующей полуночи.
Так может ли кто-нибудь сказать, является ли это проблемой конфигурации или это просто проблема log4net?
2 ответов
проблема была решена путем удаления ключа модели блокировки, так как у меня есть только один процесс (IIS, w3wp.exe), который использует тот же регистратор.
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
Так как было сказано здесь:
Если вы используете RollingFileAppender, все становится еще хуже, так как несколько процессов могут попытаться одновременно запустить файл журнала. RollingFileAppender полностью игнорирует модель блокировки при прокатке файлов, прокатка файлов просто несовместима с этим сценарий.
Я думаю, вы получите непредсказуемые результаты.
Я предполагаю, что ваше использование a-sign на datePattern
запутывает фреймворк, так что после первого рулона любой журнал запускает событие рулона.
что происходит, когда вы пытаетесь это сделать с
<datePattern value="yyyyMMdd" />
на примере здесь.
чтобы изменить период качения, настройте значение DatePattern. для например, шаблон даты "yyyyMMdd" будет катиться каждый день. посмотреть Система.Глобализация.DateTimeFormatInfo для списка в наличии узоры.