我知道所有的建议都说“不要这样做”。这个
log4net FAQ
(正如这个答案所指出的
https://stackoverflow.com/a/16966203/90236
)说:
如果使用RollingFileAppender,情况会变得更糟,因为
RollingFileAppender在滚动时完全忽略锁定模型
文件,滚动文件与此方案不兼容。
如果我使用RollingMode日期呢?
<rollingStyle value="Date"/>
如果所有进程都具有相同的Log4NET配置,并且我们只按日期滚动日志记录,则避免了日志文件重命名和RollingFileAppender可能具有的其他复杂性。
在这种情况下,从多个进程使用RollingFileAppender是否安全?
<log4net>
<appender name="appname" type="log4net.Appender.RollingFileAppender">
<file value="..\log\applog" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+InterProcessLock" />
<staticLogFileName value="false" />
<rollingStyle value="Date"/>
<datePattern value="'.'yyyy-MM-dd_HH'.log'" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %property{threadId}/%thread [sid:%property{channelId}] %logger{1} - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="appname" />
</root>
</log4net>