一个程序的多个实例可以同时写一个log吗?

chifanheshui 2011-05-03 01:54:55
如题:
我做了一个程序,即是服务器端又是客户端,第一次启动的时候开一个监听,从第二次开始的时候就成了客户端了,通过socket传数据。
问题是,只有第一次启动的程序才能写log,二次以后的都写不了。
不知道哪位大侠可以指点指点。。。
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chifanheshui 2011-05-06
  • 打赏
  • 举报
回复
log4net里有个属性可以设置log文件是否是共享独占锁,设定这个属性后,问题解决。


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

写在Appender里。
chifanheshui 2011-05-04
  • 打赏
  • 举报
回复
楼上说的对,是追加方式写文件。
这个在.net中好像不一样。
今天用c#的代码,似乎没起作用,第二次的时候没写进去。
magong 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chifanheshui 的回复:]

问题解决了。
原因是第二次的时候没有调用如下语句
DOMConfigurator.configure("config/log4j.xml");

如果每次都调用上面的话,不管是客户端还是服务器都可以写在一个log文件里,不会发生冲突。
[/Quote]
如果这样,那默认肯定就是追加方式写文件了。
改日验证。谢谢。
chifanheshui 2011-05-03
  • 打赏
  • 举报
回复
问题解决了。
原因是第二次的时候没有调用如下语句
DOMConfigurator.configure("config/log4j.xml");

如果每次都调用上面的话,不管是客户端还是服务器都可以写在一个log文件里,不会发生冲突。
magong 2011-05-03
  • 打赏
  • 举报
回复
当然你要做成这个样子。
如果是自己开文件的话,无非就是如何生成不重复的文件名的问题了。
chifanheshui 2011-05-03
  • 打赏
  • 举报
回复
可以写2个log文件吗?
比如每次运行都生成一个log文件
magong 2011-05-03
  • 打赏
  • 举报
回复
你说的是两个进程同时共享同一个文件?
做不了,想其他办法吧。

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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