处理大日志文件

处理大日志文件

在服务器中,可能因为某些原因而堆积很多日志文件,有的没处理好可能单个日志文件几G甚至几十G。

场景

应用给用户提供了免部署解决方案,让用户把jar包上传到应用中,在应用中可以启动/停止用户程序。由于用户与应用并没有对用户程序的日志加以管理,导致用户程序运行越久,日志堆积越严重。

解决方案

Split命令

可以利用Linux的Split命令对日志文件进行分割留下其中一个分割文件随后清空大日志文件。

具体逻辑可以编写成Linux脚本,利用find命令找到目标文件进行遍历处理。

Java实现

参照Split方案要走的流程用Java来实现,即用了split命令还需要做后续的处理,如删除原文件、删除其他分割文件只留下一个等这些问题,让Linux编程不熟练的我有点难受。

File_Size_Optimization项目

项目地址:File_Size_Optimization

踩坑记录

RandomAccessFile的skipBytes方法存在int溢出

RandomAccessFile的length方法、File的length方法都是返回的long类型,但是RandomAccessFile的skipBytes方法接收的却是int类型,再计算大文件的过字节数时得到的数字超过了int的范围,需要手动解决int溢出的问题。

优化后的文件无法move到原文件

原文件一直处于持续写入的状态,将优化后的文件move到原文件达到替换的目的是会失败的,甚至连rm -rf都可能会执行失败。这里我只好再加一个策略,默认执行清空原文件而不是move原文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值