log4net +多线程+滚动文件appender

dru*_*mel 11 log4net multithreading rollingfileappender

我在log4net.config中有log4net的这个设置,允许多个线程写入同一个文件:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!-- Minimal locking to allow multiple threads to write to the same file -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="log\UI.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="30"/>
    <datePattern value="-yyyyMMdd"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level [%property{identity}] %logger{3} - %message%newline"/>
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

但是在午夜之后,新创建的日志文件一直被覆盖,因此文件中只有最后一个事件.服务器重新启动后,它再次向右移动直到下一个午夜.
那么有人可以说这是配置问题还是这只是一个log4net问题?

dru*_*mel 10

通过删除锁定模型键解决了该问题,因为我只有一个使用相同记录器的进程(IIS,w3wp.exe).

<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
Run Code Online (Sandbox Code Playgroud)

既然在这里说:

如果使用RollingFileAppender,事情会变得更糟,因为多个进程可能会尝试同时开始滚动日志文件.RollingFileAppender在滚动文件时完全忽略锁定模型,滚动文件与此方案完全不兼容.

我想你会得到不可预知的结果.