怎么用Java实时读取日志文件
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,本篇内容介绍了"怎么用Java实时读取日志文件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!编码实现
千家信息网最后更新 2025年01月28日怎么用Java实时读取日志文件
本篇内容介绍了"怎么用Java实时读取日志文件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
编码实现
写日志文件,每秒写200条记录,并且记录写的时间
import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import java.text.SimpleDateFormat;import java.util.Date;public class LogReader implements Runnable { private File logFile = null; private long lastTimeFileSize = 0; // 上次文件大小 private static SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); public LogReader(File logFile) { this.logFile = logFile; lastTimeFileSize = logFile.length(); } /** * 实时输出日志信息 */ public void run() { while (true) { try { long len = logFile.length(); if (len < lastTimeFileSize) { System.out.println("Log file was reset. Restarting logging from start of file."); lastTimeFileSize = len; } else if(len > lastTimeFileSize) { RandomAccessFile randomFile = new RandomAccessFile(logFile, "r"); randomFile.seek(lastTimeFileSize); String tmp = null; while ((tmp = randomFile.readLine()) != null) { System.out.println(dateFormat.format(new Date()) + "\t" + tmp); } lastTimeFileSize = randomFile.length(); randomFile.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
实时读取日志文件,每隔1秒读一次
import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import java.text.SimpleDateFormat;import java.util.Date;public class LogReader implements Runnable { private File logFile = null; private long lastTimeFileSize = 0; // 上次文件大小 private static SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); public LogReader(File logFile) { this.logFile = logFile; lastTimeFileSize = logFile.length(); } /** * 实时输出日志信息 */ public void run() { while (true) { try { RandomAccessFile randomFile = new RandomAccessFile(logFile, "r"); randomFile.seek(lastTimeFileSize); String tmp = null; while ((tmp = randomFile.readLine()) != null) { System.out.println(dateFormat.format(new Date()) + "\t" + tmp); } lastTimeFileSize = randomFile.length(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
开启写线程、读线程,将实时信息打印在控制台。
import java.io.File;public class RunRun { public static void main(String[] args) { File logFile = new File("mock.log"); Thread wthread = new Thread(new LogWrite(logFile)); wthread.start(); Thread rthread = new Thread(new LogReader(logFile)); rthread.start(); }}
在读写的过程中,我们可以手动将mock.log文件重命名,发现依旧可以实时读。
"怎么用Java实时读取日志文件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
实时
文件
日志
信息
输出
内容
大小
更多
知识
线程
过程
实用
学有所成
接下来
困境
实际
情况
手动
控制台
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器主板配什么声卡好
vb如何把数据写入数据库中
某市网络安全工作计划
数据库的用户界面元素有哪些
极地旋风的服务器号码是多少
奇迹mu数据库还原
网上订车票数据库
谷歌软件开发
网心服务器收益
软件开发怎么在定额中代入
软件开发风险提示
搭建poppe服务器
以色列的网络安全性
畅宇科技互联网盈利
查询服务器的ntp
pareto在软件开发中的应用
elk数据库
考研数据库和数据结构哪个难
常熟有没有软件开发公司
消息服务器 token
怎么建一个数据库
计算机网络技术专业分析模板
葫芦岛网络安全会议
网络安全产业强市
软件开发会干什么
域控 数据库故障转移群集部署
河南悦博网络技术有限公司
qq邮箱的收发服务器是啥
网络安全电子板报高清
十三五期间网络安全状况分析