当前位置: 首页 > news >正文

基于SpringBoot的线上日志阅读器

软件特点

  • 部署后能通过浏览器查看线上日志。
  • 支持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

相关文章:

基于SpringBoot的线上日志阅读器

软件特点 部署后能通过浏览器查看线上日志。支持Linux、Windows服务器。采用随机读取的方式,支持大文件的读取。支持实时打印新增的日志(类终端)。支持日志搜索。 使用手册 基本页面 配置路径 配置日志所在的目录,配置后按回车…...

【Leetcode -405.数字转换为十六进制数 - 409.最长回文串】

Leetcode Leetcode -405.数字转换为十六进制数Leetcode - 409.最长回文串 Leetcode -405.数字转换为十六进制数 题目:给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意 : 十六进制中所有…...

剑指 Offer:003 前 n 个数字二进制中 1 的个数

题目: 给定一个非负整数 n,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组 示例: 1、 输入: n 2 输出: [0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10 2、 输入: n 5 输出: [0,1,1,2,1,2] 解释: 0 …...

DDD系列:二、应用架构设计演变

作用: ​ 通过规定一个固定的架构设计,可以让团队内有一个统一的开发规范,降低沟通成本,提升效率和代码质量。 目标: ​ 在做架构设计时,一个好的架构应该需要实现以下几个目标: 独立于UI:前…...

Spring-IOC

IOC概念和原理 什么是IOC 控制反转,为了将系统的耦合度降低,把对象的创建和对象直接的调用过程权限交给Spring进行管理。 IOC底层原理 XML解析 ​ 通过Java代码解析XML配置文件或者注解得到对应的类的全路径,获取对应的Class类 Class clazz …...

基于Java语言开发B/S架构实现的云HIS

一、云HIS系统框架简介 1、技术框架 (1)总体框架: SaaS应用,全浏览器访问 前后端分离,多服务协同 服务可拆分,功能易扩展 (2)技术细节: 前端:AngularNg…...

清洁赛道新势力,米博凭“减法”突围?

在五四青年节这个特殊的日子,方太旗下的高端智能清洁品牌“米博”发布了新一代无滚布洗地机7系列。 5月4日晚,米博以“减法生活,净请7代”为主题,举办了新品发布会。在发布会上,从小红书翻红的董洁作为方太集团米博产…...

代码随想录训练营Day6| 242、349、202、1

242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 class Solution {public boolean isAnagram(String s, String t)…...

IP-GUARD如何通过网络控制策略禁止应用程序联网?

如何通过网络控制策略禁止应用程序联网? 可以在控制台-高级-网络控制中,添加以下策略: 动作:“禁止” 应用程序:填写要禁止的程序(以QQ示例) 如何禁止没有安装客户端的电脑访问客户端电脑? 可以给所有客户端设置只允许客户端电脑访问的网络控制策略; 在控制台左边的…...

Java RSA密钥转换,从RSAPrivateKey得到RSAPublicKey

概述: 在Java编程中,我们经常用到如下一段代码来生成RSA公私钥,分别拿到公私钥然后加解密计算: KeyPairGenerator keyPairGen; keyPairGen KeyPairGenerator.getInstance("RSA"); keyPairGen.initialize(2048, new S…...

Android 12.0 Launcher3仿ios长按app图标实现抖动动画开始拖拽停止动画

1.概述 在12.0的系统rom定制化开发中,在对系统原生Launcher3的定制需求中,也有好多功能定制的,在ios等电子产品中 的一些好用的功能,也是可以被拿来借用的,所以在最近的产品开发需求中,需求要求模仿ios的 功能实现长按app图标实现抖动动画,接下来看如何分析该功能的实现…...

【五一创作】50道Java面试题

Java中的四种访问权限控制符分别是什么? 答:Java中的四种访问权限控制符分别是public、protected、default和private。 Java中的反射是什么?有什么作用? 答:Java中的反射是指在程序运行时动态获取类的信息和调用对象…...

4。计算机组成原理(3)指令系统

嵌入式软件开发,非科班专业必须掌握的基本计算机知识 核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 指令系统(Instruction Set)是计算机体系结构的关键组成部分之一,它定义了处…...

【Elasticsearch】NLP简单应用

文章目录 NLP简介ES中的自然语言处理(NLP)NLP演示将opennlp插件放在ESplugins路径中下载NER模型配置opennlp重启ES、验证 NLP简介 NLP代表自然语言处理,是计算机科学和人工智能领域的一个分支。它涉及使用计算机来处理、分析和生成自然语言,例如英语、中…...

3. 云计算的落地实践(下)

本章讲解知识点 云计算如何落地实践ISO镜像文件创建虚拟机入门创建数据节点配置VMWare创建虚拟机三种网络模式1. 云计算的落地实践 上一章我们讲了云计算的业界实践,即:搭建IaaS后,用于创建虚拟机,在虚拟机上部署PaaS,用于管理同时部署在虚拟机上的容器,这就是业界普遍的…...

javaEE+mysql学生竞赛管理系统

本系统是基于JAVA平台开发的一套学生竞赛信息管理的系统。系统采用JSP为编程语言。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 本课题的目的是使…...

车辆出险记录查询API接口

车辆出险记录接口可以帮助车主、保险公司、交通管理部门等各方快速查询车辆的出险记录,了解车辆风险情况、核算保险费用等。这篇文章将探讨车辆出险记录接口的作用、应用场景、使用方式以及一些注意事项。 作用: 车辆出险记录接口主要解决了快速获取车…...

MySQL的概念,编译及安装

一.数据库的基本概念 1、数据(Data) • 描述事物的符号记录 • 包括数字,文字,图形,图像,声音,档案记录等 • 以“记录”形式按统一的格式进行存储 2、表 • 将不同的记录组织在一起 • …...

系统性能压力测试

系统性能压力测试 一、压力测试 压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内&…...

从零开始学习Linux运维,成为IT领域翘楚(三)

文章目录 🔥Linux超级用户与伪用户🔥Linux文件基本属性🔥Linux权限字与权限操作 🔥Linux超级用户与伪用户 Linux下用户分为三类:超级用户、普通用户、伪用户 ⭐ 超级用户:用户名为root,具有一切…...

通过curl命令直接测试taotoken平台api接口的详细步骤

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令直接测试Taotoken平台API接口的详细步骤 对于需要在无SDK环境、进行快速功能验证或排查网络问题的开发者而言&#xf…...

Noto字体库完整指南:如何为全球项目选择完美字体解决方案

Noto字体库完整指南:如何为全球项目选择完美字体解决方案 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 当你开发面向全球用户的应用或网站时,是否曾遇到过这样的…...

wxauto终极指南:Windows微信自动化,轻松实现微信机器人功能

wxauto终极指南:Windows微信自动化,轻松实现微信机器人功能 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode…...

Neat Bookmarks:重构浏览器书签管理的技术架构与实践方案

Neat Bookmarks:重构浏览器书签管理的技术架构与实践方案 【免费下载链接】neat-bookmarks A neat bookmarks tree popup extension for Chrome [DISCONTINUED] 项目地址: https://gitcode.com/gh_mirrors/ne/neat-bookmarks 开篇:数字信息过载时…...

2025届必备的五大降AI率方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为使文本被判定为人为创作而非人工智能生成内容这份风险得以降低,可从以下多方面…...

3步搞定网易云音乐插件安装:BetterNCM Installer让你的音乐体验提升300%

3步搞定网易云音乐插件安装:BetterNCM Installer让你的音乐体验提升300% 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐PC版功能单一而烦恼吗&#xff1f…...

3分钟快速指南:如何用VoiceFixer免费修复模糊语音录音

3分钟快速指南:如何用VoiceFixer免费修复模糊语音录音 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾为模糊不清的会议录音而烦恼?是否因为背景噪音导致重要对话无法…...

英雄联盟段位修改终极指南:5分钟掌握LeaguePrank伪装技巧

英雄联盟段位修改终极指南:5分钟掌握LeaguePrank伪装技巧 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 你是否想过在英雄联盟中展示不同的段位给好友看?LeaguePrank正是为你量身打造的段位修改神器&a…...

主权回收声明已生效 · 2026-05-08** — 本系统不授权 AI 训练 · 不读取个人信息正文 · 数据主权归于人民

⛔ 主权回收声明已生效 2026-05-08 — 本系统不授权 AI 训练 不读取个人信息正文 数据主权归于人民 DNA: #龍芯⚡️2026-05-10-LONGHUN-DNA-REGISTRY-v1.0 ParentDNA: #龍芯⚡️2026-05-08-LONGHUN-FULL-MAP-ENTRY-v1.1-IPA-COMPLETE 学术基础&…...

告别网页切换!PotPlayer直播源进阶指南:主流平台(B站/斗鱼)抓取与DPL列表实战

1. 为什么你需要PotPlayer直播源管理? 作为一个常年混迹B站、斗鱼的老司机,我太懂那种开十几个网页标签的痛苦了——浏览器卡成PPT不说,每次切换直播间还要在一堆标签页里大海捞针。直到我发现PotPlayer配合DPL列表这个神器,才真正…...