log4net多进程丢失日志的解决方法

这篇博客讲述了.NET BS项目中,由于IIS应用程序池设置为多工作进程导致的日志丢失问题。作者尝试了设置log4net的锁定模型为最小锁,但发现会导致日志丢失,特别是日志文件滚动时。解决方案是使用RemotingAppender,将日志发送到远程端口进行处理,避免了多进程写入同一文件的冲突。通过运行示例代码,问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先为什么会有多进程同时记录日志到同一个文件夹同一个文件里呢,每个项目肯定有每个项目的特殊性,我这里.net的BS项目,主要是因为在IIS里,应用程序池,最大工作进程设置成2,就会出现2个w3p什么的进程同时运行你的代码,设置成多个进程这样可以最大发挥服务器的性能。这样就会多进程同时往相同的地方写日志。网上搜的话,基本上都是说给配置文件里的锁定模型上设置成最小锁,这样多进程可以同时写同一个日志。

<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />

但这样写是可以写,但经常会丢失部分日志,尤其是日志文件满了需要滚动的时候,经常就把旧的文件给滚没了。尝试了更新到最新的log4net也不能解决。搜索有类似问题的log4j的大神自己修改源代码解决

https://blog.youkuaiyun.com/somechange/article/details/80895507

大概看了下log4net的源代码,也不敢瞎改呀。然后研究看官网文档看到这么一段:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值