项目介绍
本来这个项目也是为了gitchat的一篇文章写的,但是这篇gitchat的文章没保留,有点可惜了哈,
本来不想重新写了,正好让ai帮我整理了下,效果还可以。源码git地址在最后。
JFinal Real-time Log Viewer 是一个轻量级的、基于 Web 的实时日志查看工具。它使用 Java (JFinal + Undertow) 作为后端,通过 WebSocket 将服务器日志实时推送到前端页面进行展示。
主要功能
- 实时日志流:通过 tail -f 命令和 WebSocket,实现日志的实时无刷新加载。
- 多日志文件支持:可在后端配置多个日志文件,通过前端下拉框轻松切换。
- Web 界面:提供一个简洁的网页客户端,无需通过 SSH 登录服务器即可查看日志。
- 易于部署:项目打包为单个可执行的 jar 文件,内置 Undertow 服务器,无额外依赖。
- 安全性:前端只能请求后端预先配置好的日志文件,避免了任意文件读取的风险。
技术栈
- 后端:JFinal, Undertow, Java WebSocket (JSR 356)
- 前端:HTML, JavaScript, jQuery, WebSocket
- 构建:Maven
使用文档
1. 环境要求
- Java Development Kit (JDK): 1.8 或更高版本。
- Maven: 用于项目构建。
- 类 Unix 操作系统 (Linux, macOS): 项目核心功能依赖于 tail -f 命令,因此不支持 Windows 系统。
2. 配置
在部署前,您需要配置希望通过 Web 访问的日志文件。
- 打开源文件: src/main/java/org/yu/LogWebSocketHandle.java
- 找到 logMap 静态代码块。
- 修改或添加您自己的日志文件路径。
示例:
public class LogWebSocketHandle {
// ...
private static Map<String, String> logMap = new HashMap<String, String>();
static {
// key: 是前端下拉框显示的名称 (例如 "catalina.out")
// value: 是日志文件在服务器上的绝对路径
logMap.put("catalina.out","/opt/dir/d/apache-tomcat-9.0.31/logs/catalina.out");
logMap.put("manager-log","/opt/dir/d/apache-tomcat-9.0.31/logs/manager.2020-06-08.log");
// 在这里添加您自己的日志文件
// logMap.put("my-app-log", "/var/log/my-app.log");
}
// ...
}
3. 构建项目
在项目根目录下,执行以下 Maven 命令:
mvn package
该命令会编译项目,并将所有依赖打包成一个可执行的 JAR 文件。构建成功后,您会在 target/ 目录下找到 jfinal_log-0.0.1.jar 文件。
4. 运行
使用 java -jar 命令来启动应用:
java -jar target/jfinal_log-0.0.1.jar
服务启动后,默认会监听 8080 端口。
5. 访问和使用
- 打开您的 Web 浏览器。
- 访问地址: http://<您的服务器IP>:8080/log.html
- 在页面顶部的下拉菜单中,选择您在 logMap 中配置的日志文件。
- 日志内容将会实时显示在页面上。
前端快捷键:
- Ctrl + C: 停止当前日志的刷新。
- 回车 (Enter): 在日志输出中添加一个空行,方便分隔查看。
备注
catalina.out:
/opt/dir/d/apache-tomcat-9.0.31/logs/catalina.out
manager-log:
/opt/dir/d/apache-tomcat-9.0.31/logs/manager.2020-06-08.log
是我早期的测试目录,请在项目中自行替换。
git地址:
https://gitcode.com/boostyu/jfinal_log