java解析日志数据_Java实时监控日志文件并输出的方法详解
Java实时监控日志文件并输出的方法详解
想在前台显示数据同步过程中产生的日志文件,在网上找到解决方案,做了代码测试好用。这里做个记录
java.io.RandomAccessFile可以解决同时向文件读和写.为了模拟这个问题,编写LogSvr和 LogView类,LogSvr不断向mock.log日志文件写数据,而 LogView则实时输出日志变化部分的数据.
代码1:日志产生类
package com.fbkj.genelog;
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.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class LogSvr {
private SimpleDateFormat dateFormat =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 将信息记录到日志文件
* @param logFile 日志文件
* @param mesInfo 信息
* @throws IOException
*/
public void logMsg(File logFile,String mesInfo) throws IOException{
if(logFile == null) {
throw new IllegalStateException("logFile can not be null!");
}
Writer txtWriter = new FileWriter(logFile,true);
txtWriter.write(dateFormat.format(new Date()) +"\t"+mesInfo+"\n");
txtWriter.flush();
}
public static void main(String[] args) throws Exception{
final LogSvr logSvr = new LogSvr();
String userdir = System.getProperty("user.dir");
final File tmpLogFile = new File(userdir+"/mock.log");
if(!tmpLogFile.exists()) {
tmpLogFile.createNewFile();
}
//启动一个线程每5秒钟向日志文件写一次数据
ScheduledExecutorService exec =
Executors.newScheduledThreadPool(1);
exec.scheduleWithFixedDelay(new Runnable(){
public void run() {
try {
logSvr.logMsg(tmpLogFile, " 99bill test !");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, 0, 5, TimeUnit.SECONDS);
}
}
代码2:显示日志的类
package com.fbkj.genelog;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
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");
//启动一个线程每10秒钟读取新增的日志信息
ScheduledExecutorService exec =
Executors.newScheduledThreadPool(1);
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, 1, TimeUnit.SECONDS);
}
public static void main(String[] args) throws Exception {
String userdir = System.getProperty("user.dir");
LogView view = new LogView();
final File tmpLogFile = new File(userdir+"/mock.log");
view.realtimeShowLog(tmpLogFile);
}
}
先执行LogSvr类,LogSvr类会启动一个线程,每5秒钟向mock.log日志文件写一次数据,
然后再执行LogView类,LogView每隔1秒钟读一次,如果数据有变化则输出变化的部分.
java解析日志数据_Java实时监控日志文件并输出的方法详解相关推荐
- java 查询sql语句_java执行SQL语句实现查询的通用方法详解
完成sql查询 并将查询结果放入vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static vector executequery(class clazz, s ...
- java读取日志_Java实时监控日志文件并输出的方法详解
前言 最近有一个银行数据漂白系统,要求操作人员在页面调用远端Linux服务器的shell,并将shell输出的信息保存到一个日志文件,前台页面要实时显示日志文件的内容.这个问题难点在于如何判断哪些数据 ...
- java文件下载controller_Java Spring MVC 上传下载文件配置及controller方法详解
下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...
- java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解
下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...
- java解析json数据_java解析JSON数据详解
JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...
- java中flush函数作用_Java语言中flush()函数作用及使用方法详解
最近在学习io流,发现每次都会出现flush()函数,查了一下其作用,起作用主要如下 //------–flush()的作用--------– 笼统且错误的回答: 缓冲区中的数据保存直到缓冲区满后才写 ...
- Zabbix与ELK整合实现对安全日志数据的实时监控告警
微信公众号:运维开发故事,作者:double冬 1 ELK与ZABBIX有什么关系? ELK大家应该比较熟悉了,zabbix应该也不陌生,那么将ELK和zabbix放到一起的话,可能大家就有疑问了?这 ...
- java object取数据_java使用ObjectInputStream从文件中读取对象
import java.io.EOFException; import java.io.FileInputStream; import java.io.FileNotFoundException; i ...
- java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]
本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...
最新文章
- 仲兆鹏 160809329 第5次
- shell脚本参数$10问题
- SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)
- 【mxnet速成】mxnet图像分类从模型自定义到测试
- Copy List with Random Pointer
- JS获取元素的offsetTop,offsetLeft等相关属性
- Codeforces Round #703 (Div. 2) Guessing the Greatest C1 C2 二分
- java ews_Java---使用EWS 写个ExchangeMailUtil
- HTML5简易在线画图工具
- java cl 規格_Java JavaCL類代碼示例
- 这些都是当年在C/C++上折的地儿…
- Python 目录及文件操作(os.模块)
- gc日志怎么看_JVM探秘:GC日志收集与分析
- [Unity][AssetStore][PacakageManager]2020.1版本后的AssetStore如何下载资源并导入编辑器以及Error refreshing packages解决办法
- github 从0开始的基本操作到fork和pr项目
- OAuth三方授权登录
- 【整理】关于Android图形系统的一些事实真相
- 开发一个在线Excel系统?SpreadJS让开发如此简单
- 初中英语知识水平测试软件,美国初中生英文水平测试!百个单词检测,看看你认识几个...
- Chrome插件开发-右键菜单开启页面编辑