我在 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>
但是在午夜之后,新创建的日志文件一直被覆盖,因此文件中只有最后一个事件。服务器重新启动后,一切都会恢复正常,直到下一个午夜。
那么有人能说这是一个配置问题还是只是一个 log4net 问题?
最佳答案
由于我只有一个使用相同记录器的进程(IIS、w3wp.exe),因此通过删除锁定模型 key 解决了该问题。
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
既然说here :
If you use RollingFileAppender things become even worse as several process may try to start rolling the log file concurrently. RollingFileAppender completely ignores the locking model when rolling files, rolling files is simply not compatible with this scenario.
我想你会得到不可预测的结果。
关于multithreading - log4net + 多线程 + 滚动文件追加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218962/