关于Weblogic Server重启或log rotation导致server.log的i node number变化问 - 编程入门网
关于Weblogic Server重启或log rotation导致server.log的i node number变化问时间:2011-01-13 BlogJava 走走停停又三年关于Weblogic Server重启或log rotation导致server.log的i node number变化问题 前两天同事问我一个问题,说是客户那边使用Tivoli分析weblogic server日志的时候,每当server重启,Tivoli就出错,说是FileId is changed。当时就怀疑可能跟server log的iNodeNumber有关。因为没怎么仔细看过weblogic server logging的代码,也不是很确认。跟同事说,让客户通过 ls -i 确认一下对应的iNodeNumber。客户反馈说:iNodeNumber没有发生变化,崩溃,文件名没变, iNodeNumber没变,Tivoli说的FileId到底是什么? FileSystem里还有其他标识文件的东西?我有点开始怀疑这个客户了,嘿嘿。 索性,自己做个测试吧。 首先看了看weblogic的代码,log rotation的时候,只是调用了File.renameTo(),如下: weblogic.loggin.FileStreamHandler.rotateLog() logFile.renameTo(rotatedFile) 见鬼了, rename完了iNodeNumber还有不变的道理?看看JDK代码再说, File.renameTo()
这家伙,还是依赖于FileSystem的,再一看,FileSystem是个抽象类,rename的具体实现肯定跟具体的subclass有关了,只能看看Win32FileSystem吧, Win32FileSystem.java
好了,现在看到了,rename0()是个native 操作,跟共享库(.dll or .so)又扯上关系了。得, 没有本地库代码,也看不到什么实现了(不过个人感觉,本地实现调用应该是系统函数rename: int rename(const char *old,const char *new)),只能自己做实现了。写了个小测试程序, 如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |