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

问题描述

我在写一个对log4net进行性能测试的程序,现在出了个问题:多进程写Log时,会产生文件锁被独占无法访问的异常(其他进程使用中),但是程序不会退出,而是继续写后面的Log。最终结果是发生错误的Log内容丢失,但已输出的log内容显示已经是多进程在交替写log.(当然,我已经配置了最小锁定模型<lockingModeltype="log4net.Appender.FileAppender+MinimalLock"/>),不知道我叙述清除没有,想听听各位高见。

解决方案

解决方案二:
“文件锁被独占无法访问”说明出现了死锁啊,“程序不会退出”在出现异常时application.end(),排除死锁后在继续写log防止部分内容丢失
解决方案三:
不需要退出程序,希望实现多进程并发写lOG,而不产生资源争用的异常,我感觉lOG4net的实现有些问题,希望大家给指点一下。。
解决方案四:
采用阻塞读,或者阻塞写独占方式操作文件lock创建一个写入队列。启动线程考虑CPU,读文件和写文件,多线程不一定能更快把文件的内容放在数据库中,操作数据库,需要的文件的时候再生成文件。
解决方案五:
我也碰到这个问题,改动一下lockingmode,就可以解决这个问题。把LockingModel设置成MinimalLock如下:<appendername="FileAppender"type="log4net.Appender.FileAppender"><filevalue="${TMP}log-file.txt"/><appendToFilevalue="true"/><lockingModeltype="log4net.Appender.FileAppender+MinimalLock"/><layouttype="log4net.Layout.PatternLayout"><conversionPatternvalue="%date[%thread]%-5level%logger[%property{NDC}]-%message%newline"/></layout></appender>

时间: 2024-11-05 12:13:28

log4net多进程写log已配置MinimalLock仍有问题,求解答的相关文章

用python做测试实现高性能测试工具(5)—多进程写log

在上一篇中解决了系统的性能问题,但写log又引入了问题,多进程写log会引起混乱. 查询了多进程写log 的方案, 主要有2种: 利用多进程的Queue,把log放到统一的有个log queue里面,一个单独的线程写log 起一个单独的socket server,由 这个server来接受log,并负责写log 我觉得这2重方案都太重了,很多写log的地方就需要改动了,希望找到一个方案能直接不改动老代码写log的方式,开始考虑的是每个进程单独写一个log,但这样统计数据有点小不方便. 继续探索到

azure-请问 这里配置有什么用? 求解答!!!

问题描述 请问 这里配置有什么用? 求解答!!! 请问 这里配置有什么用?求解答!!! 解决方案 站点到站点VPN连接是一种请求拨号连接,它使用VPN隧道协议(PPTP或L2TP/IPSec)来连接不同的专用网络,连接两端的每个VPN服务器都提供一个到达自己所属本地专用网络的路由连接.和远程访问VPN将一台单独的计算机连接到网络中不同,站点到站点VPN连接连接整个网络.当两台VPN服务器创建站点到站点VPN连接后,连接两端的VPN所属的专用网络均可以访问另一端的远程网络,就像访问本地网络一样.

小白用php仿照js写的一个加密方法 就是有问题 求解答

问题描述 小白用php仿照js写的一个加密方法 就是有问题 求解答 原本的js是一段加密的方法 function checkform() { var dcode; var dcode1; var dcode2; dcode=document.form1.pwd.value; dcode1=""; dcode2=1275903582 dcode2=""+dcode2*137; var tmpstr; var dcodelen; dcodelen=dcode.lengt

wince项目中使用log4net写log日志

问题描述 我最近在做一个wince项目,用的VS2008.项目中要求记录一些登录用户等信息,我就想用log4net来做,因为以前做其他项目(不是wince项目)也是用的这个很顺手.然后问题来了,我声明log4net的变量时遇到了问题log4net.ILoglog=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);就是这句代码,提示找不到GetCurrentMeth

C#中使用log4net可以写多个log吗?

问题描述 情景:同时运行C#程序的多个实例,可以同时写一个log或者写不同log吗?我用c#写了一个程序,即是服务端又是客户端,第一次启动时启动一个监听,第二次启动的时候,就作为客户端,往正在监听的port发送数据.我在第一次启动时可以写log,第二次的时候就写不进去了.不知道有没有人做过类似的.而且我发现,在执行下面这句时,就会把所有的logger对应的log文件生成出来,大小是0kb.protectedstaticlog4net.ILog_Log=log4net.LogManager.Get

我是一个JAVA写程序员,配置一台笔记本电脑,求建议

问题描述 我是一个JAVA写程序员,配置一台笔记本电脑,求建议 我是一个JAVA写程序员,配置一台笔记本电脑,求建议.具体什么牌子型号现在买了一台THINKPAD E565是A核A卡,感觉被坑了.想换一台. 解决方案 感觉坑,就自己组装一台~ 解决方案二: 我用的是Y480 配置刚刚的 解决方案三: 我用的华硕,I7处理器.4k多点.用起来很流畅. 解决方案四: 处理器I7吧,运行内存可以买个4G的,然后买个4G的内存条按上.绝对很流畅

c语言-求100~200间所有素数,已写代码,但不出结果,求大神指正,感谢!

问题描述 求100~200间所有素数,已写代码,但不出结果,求大神指正,感谢! 问题描述:小弟刚开始学C语言,碰到题目,画出流程图,但是不知为什么就是无法出结果,求大神帮忙指点! 这是我写的代码: #include #include int main() { int n,i,m; m=0; for(n=100;n<=200;) { for(i=2;i<=n-1;i++) {if((n%i)==0) break;} if(i=n) { printf("%d ",n); m++

procedure db job-怎样在procedure里写log日志

问题描述 怎样在procedure里写log日志 最近要做一个DB job的feature做数据备份,但是其中一个需求是当程序出错时要用log记录出错的那一条数据,我在想我用的是:insert into (AB)TABLE1 select A B FROM TABLE1@DB_LINK 语句进行备份,这个如果失败的话不是整个都不成功吗?那如何才能记录出错的那条呢?这个可以实现吗?在proc里怎么写日志呢?求帮助啊 解决方案 用 try catch 还有个 @@error .

centos-CentOS下安装phpmyadmin已配置blowfish_secret依然提示“需要绝密密码”

问题描述 CentOS下安装phpmyadmin已配置blowfish_secret依然提示"需要绝密密码" 我已经配置了phpmyadmin目录下的config.inc.php的blowfish_secret,但依然出现错误 恳请各位能给个解答,有没有人有同样状况的.