从linux服务器中读取文件数据

烦烦烦1123 2015-03-06 05:05:28
现有一个需求:
在一台服务器上写日志文件,每当日志文件写到一定大小时,比如是1G,会将这个日志文件改名成另一个名字,并新建一个与原文件名相同的日志文件,再往这个新建的日志文件里写数据;要求写一个程序能实时地读取日志文件中的内容,并且不能写日志操作、重命名操作、不能修改日志文件的任何数据,保持日志文件的完整性。

首先,这个问题在windows下几乎无解,因为一个程序打开了一个文件,再要对文件重命名是不可能的;而在Linux下,可以得到完美解决。因为Linux的文件系统有别于windows,Linux不使用文件名,而是使用inode号码来识别文件。

现在的问题是,使用Apache的文件FTPClient读取文件时,不能保证你读取的数据文件会不会出现重命名等现象。

请问大家,有什么好的解决思路吗?

...全文
267 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2015-03-11
  • 打赏
  • 举报
回复
FTPClient 支持列出目录下文件列表,你可以从文件列表中选择文件。 “要求写一个程序能实时地读取日志文件中的内容” 你这个要读哪个文件? app.log app-20150310-01.log app-20150310-02.log …… app-20150310-99.log app.log一直被写入,你应该要读取的已经修改过名字的文件,01.log等文件不会再改变。 问题: 不应该实时读取app.log,实时分析不采用文件方式;而是定时去检查是否有新app-date-nn.log 服务器可以采用只读文件共享的方式把目录共享出来,映射到客户端本地的一个目录上,你不需要用ftpclient,只需本地文件读操作即可,共享目录请你们的IT支持一下。
烦烦烦1123 2015-03-06
  • 打赏
  • 举报
回复
@tianfang 方便吗?加个QQ呗,362993181
烦烦烦1123 2015-03-06
  • 打赏
  • 举报
回复
那它是使用ftp模式,取得的文件吗?
tianfang 2015-03-06
  • 打赏
  • 举报
回复
看看log4j的配置说明吧 已经实现了

67,542

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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