multithreading - log4net + 多线程 + 滚动文件追加器

标签 multithreading log4net 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>

但是在午夜之后,新创建的日志文件一直被覆盖,因此文件中只有最后一个事件。服务器重新启动后,一切都会恢复正常,直到下一个午夜。
那么有人能说这是一个配置问题还是只是一个 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/

相关文章:

Log4Net Appender 未加载

f# - log4net 和 "with try"F#

python - 如何测试访问数据库的其他线程

C# 捕获 "Main-Thread"上的异常

c# - 如何使用 log4net 配置多个日志记录配置?

java - 使用 RollingFileAppender 进行毫秒级滚动时 Log4j2 'Unable to move file' 错误

tomcat - Tomcat 7 上的 Grails 应用程序 : log4 daily log is overriting old backup logs

java - 如何在 Log4j 中使用 SizeBasedTriggeringPolicy 和 TimeBasedRollingPolicy?

java线程提前终止并且可疑

Java - 非最终领域的同步