Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

日志文件查看系统

一个基于Spring Boot的Web应用,用于读取和查看Linux系统中的日志文件,支持项目管理、分页浏览、关键词搜索和文件下载功能。

功能特性

  • 项目管理:创建、编辑、删除项目,每个项目关联一个日志文件路径
  • 智能加载:打开日志时自动显示文件最后500条记录(最新内容)
  • Tail模式:刷新时始终读取最新内容,类似 tail 命令
  • 分页浏览:支持大文件分页加载,可自定义每页显示行数
  • 关键词搜索:支持普通搜索和正则表达式搜索,可选区分大小写
  • 文件下载:支持下载完整的日志文件
  • 手动刷新:一键刷新日志内容,自动显示最新记录
  • 现代化UI:响应式设计,美观易用的用户界面
  • H2数据库:轻量级嵌入式数据库,无需额外配置

技术栈

  • 后端:Spring Boot 2.7.14、Spring Data JPA、H2 Database
  • 前端:原生HTML、CSS、JavaScript(无框架依赖)
  • 构建工具:Maven
  • JDK版本:Java 11+

项目结构

log-viewer/
├── src/
│   ├── main/
│   │   ├── java/com/logviewer/
│   │   │   ├── LogViewerApplication.java          # 主启动类
│   │   │   ├── controller/                         # 控制器层
│   │   │   │   ├── ProjectController.java         # 项目管理接口
│   │   │   │   └── LogController.java             # 日志读取接口
│   │   │   ├── service/                            # 服务层
│   │   │   │   ├── ProjectService.java            # 项目管理服务
│   │   │   │   └── LogReaderService.java          # 日志读取服务
│   │   │   ├── entity/                             # 实体类
│   │   │   │   └── Project.java                   # 项目实体
│   │   │   ├── repository/                         # 数据访问层
│   │   │   │   └── ProjectRepository.java         # 项目仓库
│   │   │   └── dto/                                # 数据传输对象
│   │   │       ├── ProjectDTO.java                # 项目DTO
│   │   │       ├── LogResponseDTO.java            # 日志响应DTO
│   │   │       └── ApiResponse.java               # 统一响应DTO
│   │   └── resources/
│   │       ├── application.properties              # 应用配置
│   │       └── static/                             # 静态资源
│   │           ├── index.html                      # 主页面
│   │           ├── css/style.css                   # 样式文件
│   │           └── js/app.js                       # 前端逻辑
│   └── test/
├── pom.xml                                          # Maven配置
├── .gitignore                                       # Git忽略配置
└── README.md                                        # 项目说明

快速开始

环境要求

  • JDK 11 或更高版本
  • Maven 3.6 或更高版本

安装步骤

  1. 克隆或下载项目
cd log-viewer
  1. 编译打包
mvn clean package
  1. 运行应用
java -jar target/log-viewer-1.0.0.jar

或者使用Maven直接运行:

mvn spring-boot:run
  1. 访问应用

打开浏览器访问:http://localhost:8080

  1. 访问H2控制台(可选)

访问:http://localhost:8080/h2-console

  • JDBC URL: jdbc:h2:file:./data/logviewer
  • 用户名: sa
  • 密码: (留空)

使用说明

1. 创建项目

  1. 点击左侧边栏顶部的 + 按钮
  2. 填写项目信息:
    • 项目名称:自定义项目名称(必填)
    • 日志文件路径:Linux系统中的日志文件完整路径(必填)
    • 描述:项目描述(可选)
  3. 点击"保存"按钮

2. 查看日志

  1. 在左侧项目列表中点击项目
  2. 自动显示最后500行:日志会自动加载最新的500条记录
  3. 行号显示文件的实际行号(从末尾倒推)
  4. 如需查看更早的日志,可以使用底部分页控件

💡 提示:打开项目时默认进入 Tail模式,始终显示最新内容,最适合实时监控场景。

3. 搜索日志

  1. 选择一个项目后,在搜索栏输入关键词
  2. 可选功能:
    • 区分大小写:精确匹配大小写
    • 正则表达式:使用正则表达式搜索
  3. 点击"搜索"按钮
  4. 搜索结果会显示行号和匹配的内容

4. 刷新日志

手动刷新:

  1. 选择一个项目
  2. 点击右上角的"刷新"按钮
  3. 自动读取最新500行,始终显示文件末尾的最新内容

💡 提示

  • 刷新时始终读取文件的最新内容(Tail模式)
  • 适合查看最新日志和错误信息

5. 下载日志

  1. 选择一个项目
  2. 点击右上角的"下载"按钮
  3. 浏览器会自动下载日志文件

6. 编辑/删除项目

  • 点击项目右侧的 编辑 图标修改项目信息
  • 点击 删除 图标删除项目(会弹出确认提示)

API接口文档

项目管理接口

方法 路径 说明
GET /api/projects 获取所有项目
GET /api/projects/{id} 获取单个项目
POST /api/projects 创建项目
PUT /api/projects/{id} 更新项目
DELETE /api/projects/{id} 删除项目

日志管理接口

方法 路径 说明
GET /api/logs/{projectId} 读取日志(分页)
GET /api/logs/{projectId}/tail 读取最后N行(实时监控)
GET /api/logs/{projectId}/search 搜索日志
GET /api/logs/{projectId}/download 下载日志文件
POST /api/logs/cache/clear 清除缓存

请求示例

读取日志(分页)

GET /api/logs/1?page=1&size=100

读取最后N行(Tail模式)

GET /api/logs/1/tail?lines=500

搜索日志

GET /api/logs/1/search?keyword=ERROR&caseSensitive=false&regex=false

配置说明

主要配置项在 src/main/resources/application.properties 文件中:

# 服务器端口(默认8080)
server.port=8080

# H2数据库文件路径
spring.datasource.url=jdbc:h2:file:./data/logviewer

# 文件上传限制
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB

注意事项

  1. 文件权限:确保Java应用有权限读取指定的日志文件
  2. 文件路径:日志文件路径必须是绝对路径(如:/var/log/application.log
  3. 大文件处理:系统支持大文件分页读取,但首次加载会统计总行数,可能需要一些时间
  4. 缓存机制:文件总行数会被缓存,如果文件被修改,可以使用"刷新"按钮重新加载
  5. 搜索限制:搜索结果最多返回1000行,避免内存溢出

开发说明

添加新功能

  1. 后端:在 controllerservice 层添加相应的方法
  2. 前端:在 app.js 中添加对应的JavaScript函数
  3. 样式:在 style.css 中添加样式

调试模式

修改 application.properties 中的日志级别:

logging.level.com.logviewer=DEBUG

测试

运行单元测试:

mvn test

常见问题

Q: 无法读取日志文件?

A: 检查文件路径是否正确,以及Java应用是否有读取权限。在Linux系统中可能需要调整文件权限:chmod 644 /path/to/logfile.log

Q: 大文件加载很慢?

A: 首次加载大文件时需要统计总行数,会比较耗时。后续访问会使用缓存,速度会快很多。

Q: 如何修改数据库位置?

A: 修改 application.properties 中的 spring.datasource.url 配置项。

Q: 如何部署到生产环境?

A:

  1. 使用 mvn clean package 打包
  2. 将生成的JAR文件部署到服务器
  3. 配置systemd或使用nohup运行
  4. 建议配置Nginx反向代理

许可证

本项目采用 MIT 许可证。

贡献

欢迎提交Issue和Pull Request!

联系方式

如有问题或建议,请创建Issue。


祝使用愉快! 🎉

About

日志查看器

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages