Это не очень хорошая идея использовать несколько экземпляров 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>
Конечно, вы также можете отправить журнал в базу данных или в удаленный компонент , работающий в другом процессе или даже на другом компьютере, но для этого выбора требуется больше инфраструктуры длябыть настроенным таким образом, что это может быть излишним для вашего сценария.
Связанные ресурсы: