log4net多进程写log已配置MinimalLock仍有问题,求解答

Yangtze1023 2011-02-17 02:43:24
我在写一个 对 log4net 进行性能测试的程序,现在出了个问题:
多进程写Log时,会产生文件锁被独占无法访问的异常(其他进程使用中),但是程序不会退出,而是继续写后面的Log。最终结果是发生错误的Log内容丢失,但已输出的log内容显示已经是多进程在交替写log.( 当然,我已经配置了最小锁定模型<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />),不知道我叙述清除没有,想听听各位高见。
...全文
737 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
维恩R 2012-03-26
  • 打赏
  • 举报
回复
我也碰到这个问题,改动一下locking mode,就可以解决这个问题。
把LockingModel 设置成 MinimalLock

如下:
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="${TMP}\log-file.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
wuyq11 2011-02-17
  • 打赏
  • 举报
回复
采用阻塞读,或者阻塞写
独占方式操作文件lock
创建一个写入队列。启动线程
考虑CPU,读文件和写文件,多线程不一定能更快
把文件的内容放在数据库中,操作数据库,需要的文件的时候再生成文件。
Yangtze1023 2011-02-17
  • 打赏
  • 举报
回复
不需要退出程序,希望实现多进程并发写lOG,而不产生资源争用的异常,我感觉lOG4net的实现有些问题,希望大家给指点一下。。
dujunqiang2010 2011-02-17
  • 打赏
  • 举报
回复
“文件锁被独占无法访问”说明出现了死锁啊,“程序不会退出”在出现异常时application.end(),排除死锁后在继续写log防止部分内容丢失

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧