需求:
需求:正在开发一个监控系统,要求将多台日志信息实时采集出来,然后保存到Kafka中,后期对日志数据进行spark运算、大数据处理分析,日志按大小,时间切分。
运用的技术:RandomAccessFile类中seek方法可以从指定位置读取文件,可以用来实现文件实时读取,JDK文档有对RandomAccessFile的介绍。
思想:在每一次读取后,close一下就不会影响重命名操作了。因为日志是线上机器产生的,我们只需要写实时读取的方法即可,但是这里为了模拟实际情况,也把产生日志的方法出来,在测试的时候,可以手动改变日志的名称,更为方便的处理方式-----将日志mock.log直接删除即可。
模拟写日志的类
因为日志是按大小和时间切分的,在测试的时候,直接修改日志的名称,或者删除日志。
package com.inveno.file;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.Schedu