import java.io.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
-
实时显示日志
/
public class LogView {
private long lastTimeFileSize = 0; //上次文件大小
/*- 实时输出日志信息
- @param logFile 日志文件
- @throws IOException
*/
public void realtimeShowLog(File logFile) throws IOException {
//给文件增加读写权限
final RandomAccessFile randomFile = new RandomAccessFile(logFile, “rw”);
//启动一个线程每5秒钟读取新增的日志信息
ScheduledExecutorService exec = Executors.newScheduledThreadPool(2);
exec.scheduleWithFixedDelay(new Runnable() {
public void run() {
try {
//获得变化部分的
randomFile.seek(lastTimeFileSize);
String tmp = “”;
while ((tmp = randomFile.readLine()) != null) {
System.out.println(new String(tmp.getBytes(“ISO8859-1”)));
}
lastTimeFileSize = randomFile.length();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, 0, 5, TimeUnit.SECONDS);
exec.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
Log();
}
},1,10,TimeUnit.SECONDS);
}
public static void main(String[] args) throws Exception {
LogView view = new LogView();
final File tmpLogFile = new File(“D:\file111.txt”);
view.realtimeShowLog(tmpLogFile);
}public void Log(){
try {
System.out.println(“1111111111”);
BufferedWriter writer = new BufferedWriter(new FileWriter(“D:\file111.txt”,true));
writer.write(“2024-12-04 17:04:31 |WARN |http-nio-8002-exec-4 |DruidAbstractDataSource.java:1489 |com.alibaba.druid.pool.DruidAbstractDataSource |discard long time none received connection. , jdbcUrl : jdbc:mysql://127.0.0.1:3306/NwdCRM?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai, version : 1.2.4, lastPacketReceivedIdleMillis : 85846”);
writer.newLine();
writer.flush();
writer.close();} catch (IOException e) { e.printStackTrace(); }
}
}