0
点赞
收藏
分享

微信扫一扫

记录 docker linux部署jar

言午栩 2023-05-03 阅读 34

软件特点

  • 部署后能通过浏览器查看线上日志。
  • 支持Linux、Windows服务器。
  • 采用随机读取的方式,支持大文件的读取。
  • 支持实时打印新增的日志(类终端)。
  • 支持日志搜索。

使用手册

基本页面

在这里插入图片描述

配置路径

配置日志所在的目录,配置后按回车键生效,下拉框选择日志名称。
选择日志后点击生效,即可加载日志。
在这里插入图片描述

  • windows路径
    E:\java\project\log-view\logs
  • linux路径
    /usr/local/XX

历史模式

历史模式下,不会读取新增的日志。针对历史文件可以分页读取,配置分页大小、跳转。
在这里插入图片描述
历史模式下,支持根据关键词搜索。目前搜索引擎使用的是jdk自带类库,搜索速度相对较低,优点是比较简单。2G日志全文搜索大概需要5秒左右。
建议大日志文件缩小搜索范围。

匹配结果后,左侧会展示那些数据页包含该关键词,点击后可以跳转到指定页
在这里插入图片描述
点击右侧上一页、下一页按钮,可以在关键词之间跳转,便于定位。
在这里插入图片描述

实时模式

开启实时模式后,会实时日志文件新增内容
在这里插入图片描述

实现思路

  • 技术栈
    后台:springboot
    前端:jquery+bootstrap5
  • 主要思路
    一般编辑器或者日志查看器,都需要将所有内容读到内存里。这种方式比较耗费内存,且无法打开比较大的日志。
    大文件日志一般的处理方案是做日志拆分,比如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;
    }
}

总结

  1. 前端不熟悉,页面费时较多。
  2. 查询还有一点问题,如果查询结果正好跨页,可能无法查到结果。暂时的解决方案是换一个分页大小查询。
  3. 最初的想法是集成Lucene,实现更高效的搜索方式。不过鸽了,目前看来用不到,字符串匹配的效率还能忍受。
  4. 功能最初的分析,与最后的实现偏差较大,或许应该在开发设计上再花一点时间。

项目地址

打包方式按照常规的springboot项目来,不赘述。
https://github.com/DayRain/log-view

举报

相关推荐

0 条评论