问题描述
现有一个需求:在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作、重命名操作、不能修改日志文件的任何数据,保持日志文件的完整性。首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的;而在Linux下,可以得到完美解决。因为Linux的文件系统有别于windows,Linux不使用文件名,而是使用inode号码来识别文件。现在的问题是,使用Apache的文件FTPClient读取文件时,不能保证你读取的数据文件会不会出现重命名等现象。请问大家,有什么好的解决思路吗?
解决方案
解决方案二:
看看log4j的配置说明吧已经实现了
解决方案三:
那它是使用ftp模式,取得的文件吗?
解决方案四:
@tianfang方便吗?加个QQ呗,362993181
解决方案五:
FTPClient支持列出目录下文件列表,你可以从文件列表中选择文件。“要求写一个程序能实时地读取日志文件中的内容”你这个要读哪个文件?app.logapp-20150310-01.logapp-20150310-02.log……app-20150310-99.logapp.log一直被写入,你应该要读取的已经修改过名字的文件,01.log等文件不会再改变。问题:不应该实时读取app.log,实时分析不采用文件方式;而是定时去检查是否有新app-date-nn.log服务器可以采用只读文件共享的方式把目录共享出来,映射到客户端本地的一个目录上,你不需要用ftpclient,只需本地文件读操作即可,共享目录请你们的IT支持一下。