У меня есть клиентское приложение, которое использует RollingFileAppender log4net и может быть создано несколько раз. Первоначально я записал все свои журналы в один файл, однако довольно скоро я понял, что log4net блокирует файл во время записи, хотя, даже если бы я использовал менее ограничительный режим записи, я бы все равно в моих файлах журналов много беспорядка.
Я решил включить идентификатор процесса в имя файла, например:
<appender name="HumanRollingLog" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Log\TestLog[%processid].txt"/>
<param name="DatePattern" value="dd.MM.yyyy'.log'"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true" />
<maxSizeRollBackups value="10"/>
<maximumFileSize value="1KB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%type] [%thread] %-5level %logger - %message%newline%exception%"/>
</layout>
</appender>
Это сработало. Однако он полностью испортил функции прокрутки, поскольку теперь каждый процесс порождает свой собственный файл журнала, фактическая прокрутка происходит только после повторения идентификаторов процессов. Например, запуск моего приложения 3 раза, в результате чего создаются следующие журналы:
TestLog[5396].txt
TestLog[5396].txt.1
TestLog[5396].txt.10
TestLog[5396].txt.2
TestLog[5396].txt.3
TestLog[5396].txt.4
TestLog[5396].txt.5
TestLog[5396].txt.6
TestLog[5396].txt.7
TestLog[5396].txt.8
TestLog[5396].txt.9
TestLog[5976].txt
TestLog[5976].txt.1
TestLog[5976].txt.10
TestLog[5976].txt.2
TestLog[5976].txt.3
TestLog[5976].txt.4
TestLog[5976].txt.5
TestLog[5976].txt.6
TestLog[5976].txt.7
TestLog[5976].txt.8
TestLog[5976].txt.9
TestLog[6860].txt
TestLog[6860].txt.1
TestLog[6860].txt.10
TestLog[6860].txt.2
TestLog[6860].txt.3
TestLog[6860].txt.4
TestLog[6860].txt.5
TestLog[6860].txt.6
TestLog[6860].txt.7
TestLog[6860].txt.8
TestLog[6860].txt.9
У кого-нибудь есть идеи, что я могу сделать, чтобы решить эту проблему? Мне бы хотелось, чтобы каждый процесс имел свой собственный файл, но я не могу позволить повторному использованию между ВСЕМИ процессами.
Спасибо!