响应式网站建设合同,龙岗的网站建设,更改网站伪静态,免费ppt模板可编辑软件特点
部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式#xff0c;支持大文件的读取。支持实时打印新增的日志#xff08;类终端#xff09;。支持日志搜索。
使用手册
基本页面 配置路径
配置日志所在的目录#xff0c;配置后按回车…软件特点
部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式支持大文件的读取。支持实时打印新增的日志类终端。支持日志搜索。
使用手册
基本页面 配置路径
配置日志所在的目录配置后按回车键生效下拉框选择日志名称。 选择日志后点击生效即可加载日志。
windows路径 E:\java\project\log-view\logslinux路径 /usr/local/XX
历史模式
历史模式下不会读取新增的日志。针对历史文件可以分页读取配置分页大小、跳转。 历史模式下支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库搜索速度相对较低优点是比较简单。2G日志全文搜索大概需要5秒左右。 建议大日志文件缩小搜索范围。
匹配结果后左侧会展示那些数据页包含该关键词点击后可以跳转到指定页 点击右侧上一页、下一页按钮可以在关键词之间跳转便于定位。
实时模式
开启实时模式后会实时日志文件新增内容
实现思路
技术栈 后台springboot 前端jquerybootstrap5主要思路 一般编辑器或者日志查看器都需要将所有内容读到内存里。这种方式比较耗费内存且无法打开比较大的日志。 大文件日志一般的处理方案是做日志拆分比如100M一个文件。但如果出现问题就需要一个文件一个文件找不是很方便。 用ELK这种偏重的解决方案也不现实公司提供不了相应的环境。 Java内置的类RandomAccessFile支持文件的随机读取正好提供了另一种比较轻量的解决方案就是将大日志分页读取。
package com.dayrain.log.core;import lombok.extern.slf4j.Slf4j;import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;Slf4j
public class FileRandomAccessReader {private RandomAccessFile randomAccessFile;public FileRandomAccessReader(String path) throws FileNotFoundException {randomAccessFile new RandomAccessFile(path, r);}public long getFileSize(){try {return randomAccessFile.length();} catch (IOException e) {log.error(String.valueOf(e));}return -1;}public byte[] readBytes(long fs, long fe) {int len (int) (fe - fs);byte[]bytes new byte[len];try {randomAccessFile.seek(fs);randomAccessFile.readFully(bytes, 0, len);} catch (IOException e) {log.error(String.valueOf(e));}return bytes;}
}
总结
前端不熟悉页面费时较多。查询还有一点问题如果查询结果正好跨页可能无法查到结果。暂时的解决方案是换一个分页大小查询。最初的想法是集成Lucene实现更高效的搜索方式。不过鸽了目前看来用不到字符串匹配的效率还能忍受。功能最初的分析与最后的实现偏差较大或许应该在开发设计上再花一点时间。
项目地址
打包方式按照常规的springboot项目来不赘述。 https://github.com/DayRain/log-view