Ответ 1
не рекомендуется использовать несколько экземпляров RollingFileAppender из разных процессов, записывая в тот же файл, поскольку RollingFileAppender не предназначен для этого сценария.
Здесь у вас есть несколько вариантов:
Несколько FileAppender с минимальной блокировкой
Используйте несколько экземпляров FileAppender, указывающих на один и тот же файл и настроенных с минимальной блокировкой. Это позволит выполнять одновременные операции записи из нескольких процессов:
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="Log.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
Несколько EventLogAppender
Используйте несколько экземпляров EventLogAppender, которые записываются в общий источник событий Windows:
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<applicationName value="MyApp" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern
value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
Конечно, вы также можете отправить журнал в базу данных или на удаленный компонент, работающий в другим процессом или даже другой машиной, но для этих вариантов требуется больше инфраструктуры для настройки, поэтому она может быть чрезмерной для вашего сценария.
Связанные ресурсы: