使用来自不同进程的多个 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
使用写入共享 Windows 事件源的多个EventLogAppender实例:
<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>
当然,您也可以将日志发送到数据库或在不同进程甚至不同机器中运行的远程组件,但这些选择需要设置更多的基础设施,因此对于您的场景来说可能是多余的。
相关资源: