SpringBoo+Vue构建简洁日志文件查看系统
点击下载《SpringBoo+Vue构建日志文件查看系统(源代码)》
1. 前言
想必经常做java开发的小伙伴,其大多数服务都是运行在linux系统上的,当遇到一些比较棘手的bug需要处理时,经常要上服务器去捞日志,然后通过各种查询啥的去寻找有用的信息,这样不仅对服务器有一定的安全隐患,而且查询日志内容也很不方便直观,虽然市面上有一些优秀的日志管理系统,但安装和部署也要耗费不少时间,于是,我就想到,能否有一个简单又好用,还不用花大力气去安装部署,界面简单友好又方便好用的日志查看系统呢?于是本系统就应运而生了。
这款日志文件读取Web系统展现了卓越的功能性和用户体验。它不仅支持多种文件格式(如.log和.gz),还提供了灵活的搜索选项,允许用户按行号、行数或内容来筛选日志条目。此外,系统的自动更新功能实时追踪日志文件的变化,确保用户能够即时获取最新的信息。简洁直观的操作界面使得这款工具易于使用,即使是技术新手也能快速上手。总之,该系统为日志文件管理和分析提供了高效、便捷的解决方案。
本系统总共包含两部分内容,一部分为采用springboot编写的java后台程序,用于读取其他springboot程序产生的日志内容,另一部分为使用Vue编写的Web程序,通过调用java后台程序提供的接口,获取相应的日志内容。
2. Web系统
2.1 登录
本系统由于只是本人用于查看日常工作中所开发的springboot软件产生的日志,所以在业务流程上尽量采用简单高效的实现方法,因此本系统并未使用到任何数据库,在登录验证方面,由springboot程序在配置文件中写死了登录名和密码,yml配置详情如下:

Web登录页面也是采用了简单的实现,详情如下:

2.2 日志查看
日志查看,分两种情况,一种是按起始行号和读取行数查看,另一种是输入查询内容及返回的记录数来查看,两种方式分别采用不同的数据输入格式,使用时需要注意,不过,提示内容将输入格式已经写得很明白了,一看就明白。

主界面主要分为5个部分:
1、这里是服务名,本系统可以同时读取多个SpringBoot程序的日志,根据服务名进行划分。
2、这是日志目录,其包括了日志目录已经日志文件。
3、这是日志内容展示区域。
4、这是查询内容输入区域,需根据不同的查看方式输入不同格式的内容进行查看日志。
5、这是日志查看方式选择,可选择方式包括:按行查看日志、按内容搜索日志。
2.3 按行查看日志
下面演示按行查看日志内容,输入的查询条件是:100:3,表示从100行开始,读取3行,效果如下图:

在不输入任何查询条件的情况下,一次返回100行数据,当滚动条滚动到最底下的时候将会自动再拉取一次数据。
2.4 按搜索内容查看日志
下面演示按搜索内容查看日志,输入的查询条件是:
"{"instant":{"epochSecond":1695120508,"nanoOfSecond":620000000}" 10
表示查询的内容为**{“instant”:{“epochSecond”:1695120508,“nanoOfSecond”:620000000}**,返回前10条记录。
注意:如果查询的内容中有空格,需要使用英文的双引号括起来。

2.5 自动读取文件内容
对于后缀为.log的文件,表示此文件SpringBoot程序可能会实时地更新,因此可以开启自动读取文件,此后,每隔2秒将自动调用后台接口读取文件更新内容。
3. SpringBoot后台
3.1 配置文件
以下为配置文件application.yml的内容
server:port: 19123spring:application:name: readSystemLogFileconfig:activate:on-profile: devmvc:pathmatch:matching-strategy: ant_path_matcherlogging:config: classpath:log4j2.xmllevel:root: INFOjavax.activation: INFOorg.apache.catalina: INFOorg.apache.commons.beanutils.converters: INFOorg.apache.coyote.http11.Http11Processor: INFOorg.apache.http: INFOorg.apache.tomcat: INFOorg.springframework: INFOcom.yyqq: debug# 程序基本配置
services:# 说明:name和directory必须一一对应nameList:- "test"directoryList:- "D:\\test-service-logs\\"#用户名和密码,格式为:用户名@密码;用户名@密码systemUser: "admin@admin;test@test"
3.2 Controller
本着简单实用的原则,本系统的Controller一共有两个,分别是用于账号管理的userController以及用于日志操作方面的SystemLogController。
package com.yyqq.controller;import com.yyqq.common.result.CommonResult;
import com.yyqq.model.dto.UserLoginDTO;
import com.yyqq.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/login")public CommonResult login(@Validated @RequestBody UserLoginDTO userLoginDTO) {return userService.login(userLoginDTO);}
}
package com.yyqq.controller;import com.yyqq.common.result.CommonResult;
import com.yyqq.model.dto.QueryFileContentDTO;
import com.yyqq.model.dto.ReadFileLineDTO;
import com.yyqq.service.SystemLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/systemLog")
public class SystemLogController {@Autowiredprivate SystemLogService systemLogService;/*** 获取服务名列表* @return*/@GetMapping("serviceNameList")public CommonResult<Object> getServiceNameList() {return systemLogService.getServiceNameList();}/*** 读取服务器日志目录下的文件列表* @param serviceName* @return*/@GetMapping("{serviceName}/fileList")public CommonResult<Object> getFileList(@PathVariable("serviceName") String serviceName) {return systemLogService.getFileList(serviceName);}/*** 按行读取文件内容* @param readFileLineDTO* @return*/@PostMapping("readFileContent")public CommonResult<Object> readFileContent(@RequestBody ReadFileLineDTO readFileLineDTO) {return systemLogService.readFileContent(readFileLineDTO);}/*** 按行读取文件内容* @param queryFileContentDTO* @return*/@PostMapping("queryFileContent")public CommonResult<Object> queryFileContent(@RequestBody QueryFileContentDTO queryFileContentDTO) {return systemLogService.queryFileContent(queryFileContentDTO);}
}
4. 总结
在这个数字化时代,数据管理和信息检索变得至关重要。这款日志文件读取Web系统,不仅满足了基础的数据读取需求,更在许多功能上有着出色的表现。
首先,系统能够读取多种格式的文件,包括.log和.gz,这大大提高了其适应性和实用性。无论是日常的日志文件还是经过压缩的大型文件,用户都可以轻易地通过该系统进行读取和解析。
更值得一提的是,本系统添加了多种搜索和筛选功能。用户可以根据行号、行数,甚至是输入的内容来查找特定的日志条目。这种灵活的搜索方式使得在大量数据中快速找到所需信息变得简单而高效。
此外,自动读取并更新.log文件的更新内容的功能,使得这款系统不仅仅是一个静态的数据查看工具,而是一个动态的信息监测平台。这对于需要实时监控系统运行状况或响应潜在问题的用户来说,是一个极为有用的功能。
最后,从用户体验的角度来看,该系统的操作简单、界面友好。即使是不熟悉技术的人,也可以快速上手并充分利用这个系统。这无疑增加了系统的普及率和实用性。
条目。这种灵活的搜索方式使得在大量数据中快速找到所需信息变得简单而高效。
此外,自动读取并更新.log文件的更新内容的功能,使得这款系统不仅仅是一个静态的数据查看工具,而是一个动态的信息监测平台。这对于需要实时监控系统运行状况或响应潜在问题的用户来说,是一个极为有用的功能。
最后,从用户体验的角度来看,该系统的操作简单、界面友好。即使是不熟悉技术的人,也可以快速上手并充分利用这个系统。这无疑增加了系统的普及率和实用性。
总的来说,这个日志文件读取系统,凭借其出色的功能和简便的操作,将复杂的数据管理任务变得简单而直观,对于需要处理和分析日志文件的人群来说,是一个不可或缺的工具。
点击下载《SpringBoo+Vue构建日志文件查看系统(源代码)》
相关文章:
SpringBoo+Vue构建简洁日志文件查看系统
点击下载《SpringBooVue构建日志文件查看系统(源代码)》 1. 前言 想必经常做java开发的小伙伴,其大多数服务都是运行在linux系统上的,当遇到一些比较棘手的bug需要处理时,经常要上服务器去捞日志,然后通过…...
JavaScript基础第二天
JavaScript基础第二天 今天我们学习if分支语句、三元表达式和switch-case语句。 1. if分支语句 1.1 语法 if (条件表达式){// 满足条件要执行的语句 } else {// 不满足条件要执行的语句 }if中的内容如果为true,就执行大括号的代码块,如果为false执行…...
2、卷积和ReLU激活函数
python了解集合网络如何创建具有卷积层的特性。 文章目录 简介特征提取(Feature Extraction)卷积过滤(Filter with Convolution)Weights(权重)激活(Activations)用ReLU检测示例 - 应用卷积和ReLU结论In [1]: import numpy as np from itertools import productdef show_kerne…...
SQL世界之基础命令语句
目录 一、SQL SELECT 语句 1.SQL SELECT 语法 2.SQL SELECT 实例 3.SQL SELECT * 实例 二、SQL SELECT DISTINCT 语句 1.语法 2.使用 DISTINCT 关键词 三、SQL SELECT WHERE 语句 1.WHERE 子句 2.语法 3.使用 WHERE 子句 4.引号的使用 四、SQL SELECT AND&OR …...
Facebook未来展望:社交媒体的下一个篇章
社交媒体一直是连接人与人之间的纽带,而Facebook则一直在推动这一领域的发展。随着科技不断演进和社会需求的不断变迁,Facebook正积极筹谋社交媒体的下一个篇章。本文将深入剖析Facebook的未来展望,探讨其在社交媒体领域所迎接的新时代。 1. …...
源码搭建教学:直播带货商城小程序开发
结合小程序开发的直播带货商城,不仅可以提供更便捷的购物体验,还可以实现更高效的销售。因此,学习如何搭建一个直播带货商城小程序将成为您拓展商业领域的利器。 步骤一:准备工作 在开始开发之前,您需要进行一些准备工…...
vue-cli引入本地json数据:封装为js文件,无需请求直接读取
vue-cli引入本地json数据 1、新建js文件(路径自定义),写入JSON数据 /* jsonData.js */export let jsonData { // 声明变量,存储数据// JSON源数据 }2、组件内引入js文件,读取数据 /* Example.vue */import { json…...
20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式
20240202在Ubuntu20.04.6下使用whisper.cpp的显卡模式 2024/2/2 19:43 【结论:在Ubuntu20.04.6下,确认large模式识别7分钟中文视频,需要356447.78 ms,也就是356.5秒,需要大概5分钟!效率太差!】 …...
前端面试拼图-数据结构与算法
摘要:总结一些前端算法题,持续更新! 一、数据结构与算法 时间复杂度-程序执行时需要的计算量(CPU) 空间复杂度-程序执行时需要的内存空间 前端开发:重时间,轻空间 1.把一个数组旋转k步 arr…...
在C++的union中使用std::string(非POD对象)的陷阱
struct和union的对比 union最开始是C语言中的关键字,在嵌入式中比较常见,由于嵌入式内存比较稀缺,所以常用union用来节约空间,在其他需要节省内存的地方也可以用到这个关键字,写一个简单程序来说明union的用途 struc…...
Spring Cloud Netflix Eureka的参数调优
下面主要分为Client端和Server端两大类进行简述,Eureka的几个核心参数 客户端参数 Client端的核心参数 参数默认值说明eureka.client.availability-zones告知Client有哪些region以及availability-zones,支持配置修改运行时生效eureka.client.filter-o…...
Wireshark不显示Thrift协议
使用Wireshark对thrift协议进行抓包,但是只显示了传输层的tcp协议: "右键" -> "Decode As" 选择thrift的tcp端口 将“当前”修改为Thrift,然后点击“确定” 设置后,可以发现Wireshark里面显示的协议从Tcp变…...
VMware虚拟机安装openEuler系统(一)(2024)
目录 一、下载ISO镜像 二、开始创建虚拟机 通过实践是学习openEuler开源Linux系统的最佳方式。因此我们首先得搭建一个openEuler实战环境,文章是在Windows系统上使用VMware Workstation虚拟化软件,安装和学习openEuler开源Linux操作系统。 使用虚拟机…...
Rust入门
文章目录 一、HelloWorld二、控制台输入 以最简单的两个Rust程序例子入门Rust。首先需要下载安装Rust,之后在VSCode或Clion中运行Rust需要下载Rust插件 一、HelloWorld fn main(){println!("Hello World!"); }二、控制台输入 use std::io::stdin; fn …...
RabiitMQ延迟队列(死信交换机)
Dead Letter Exchange(死信交换机) 在MQ中,当消息成为死信(Dead message 死掉的信息)后,消息中间件可以将其从当前队列发送到另一个队列中,这个队列就是死信队列。而 在RabbitMQ中,由…...
浅谈应该遵守的伦敦银交易规则
做伦敦银投资的朋友应遵守伦敦银交易规则,伦敦银交易规则不是指那些伦敦银交易技巧,而是在这个市场中要遵循的一些约定,下面我们就来讨论一下。 风险管理。风险管理即指投资者控制自己一笔乃至整体交易的风险,没有风险管理意识的投…...
安装opencart
一、安装模板 Install SO Emarket Opencart 4 Theme 一:so_emarket_quick2 二:theme package installation 1、installed opencart Default 2、Extensions->Installer->Upload->so_emarket_theme_oc4011_home21_to_home35_v2.0.3->so_theme…...
Qt PCL学习(一):环境搭建
参考 (QT配置pcl)PCL1.12.1QT5.15.2vs2019cmake3.22.4vtk9.1.0visual studio2019Qt5.15.2PCL1.12.1vtk9.1.0cmake3.22.2 本博客用到的所有资源 版本一览:Visual Studio 2019 Qt 5.15.2 PCL 1.12.1 VTK 9.1.0https://pan.baidu.com/s/1xW7xCdR5QzgS1_d1NeIZpQ?pw…...
代码随想录算法训练营第四十二天 | 416. 分割等和子集
题目链接:416. 分割等和子集 文章讲解:代码随想录 416. 分割等和子集讲解 视频讲解:动态规划之背包问题,这个包能装满吗?| LeetCode:416.分割等和子集 思路和解法 题目: 给你一个 只包含正整…...
Spring GateWay
概述简介 能干什么 反向代理 鉴权 流量控制 熔断 日志监控 Spring Cloud Gateway 与Zuul的区别 在SpringCloud Finchley正式版之前,Spring Cloud推荐的网关是 Netflix提供的Zuul: 1、Zuul 1.x,是一个基于阻塞Ⅳ/O的APl Gateway 2、Zuul 1.x基于Servl…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
